Курилка.co.ua
Orphus RSS kurilka.co.ua

Category

Archives

Регулярные выражения: чистка строковых данных (PHP)

Author wmas wmas | Category Category Вебмастеру

Как не крутись, а обеспечить полную безопасность в обработке данных фактически невозможно. Можно лишь пытаться сделать что-то эдакое; надеясь не стать жертвой, талантливого или не очень, хакера.

О чём же тогда речь? В данной заметке я хотел бы предложить вам, не самое сложное, но вполне интересное решение по чистке строковых данных.

Как оно работает? Да очень просто. Используя нехитрое регулярное выражение, в виде набора допустимых в строке символов, он производит чистку всего остального.

Не скажу, что это столь уж эффективных способ. Однако, лучше что-то чем ничего. Таким образом у меня получилась вот такая простенькая функция:

function str_strip($s='') {
return trim(preg_replace("/[^0-9a-zA-Zа-яА-Я .,+\/\-]/i", "", $s));
}

Наверно, Вы уже заметили один очевидный недостаток. Если мы говорим о кириллице, то функция не обходится без влияния кодировки. Как таковой это тоже поправимо. Например таким вот образом:

function str_strip($s='', $charset='windows-1251') {
$pattern = "/[^0-9a-zA-Zа-яА-Я .,+\/\-]/i";
if ( $charset!='windows-1251' ) $pattern = ('windows-1251', $charset, $pattern);
return trim(preg_replace($pattern, "", $s));
}

Конечно, здесь тоже есть свои нюансы. Однако, сам принцип думаю понятен, а заметка поможет вам в решении определённых задач. Спасибо за внимание.

подстовой: недвижимость Одесса, аренда квартиры в Одессе

Publish: Вторник Окт 21, 2008

7 Responses for "Регулярные выражения: чистка строковых данных (PHP)"

feed for comments on this post

  • Комментарий #1944 author: Nalivaeff Reply
    publish: Среда Окт 22, 2008 at 5:52 дп

    Приветствую, Константин! С возвращением! Чтщ-то давненько не писал. По этой заметке все понятно, спасибо. Ты заметил что яндекс денюжка изменилась? Я про тот скрипт который считывает CY с изображения. Как его подстроить под новое?

  • Комментарий #1946 author: wmas Reply
    publish: Среда Окт 22, 2008 at 10:54 дп

    2Nalivaeff: hi! Да, в курилке давненько, но у меня не только этот блог и вообще тем как таковой не было. На счёт Яндекс денежки — заметил. Потому и вышла вторая версия, читай здесь, там я всё рассказал.

  • Комментарий #1961 author: Пётр Reply
    publish: Воскресенье Окт 26, 2008 at 10:10 пп

    спасибо за информацию

  • Комментарий #1962 author: wmas Reply
    publish: Воскресенье Окт 26, 2008 at 11:45 пп

    2Пётр: hi! Рад, что заметка была полезной ;-)

  • Комментарий #1963 author: Уютный Reply
    publish: Понедельник Окт 27, 2008 at 10:46 дп

    Спасибо, что уделил для этого время, помог :-)

  • Комментарий #2139 author: Артур Хазанов Reply
    publish: Вторник Фев 3, 2009 at 12:26 пп

    $pattern = iconv('cp1251', $charset, $pattern);
    Вот так правильнее

  • Комментарий #2141 author: wmas Reply
    publish: Вторник Фев 3, 2009 at 1:01 пп

    2Артур Хазанов: hi! Вообще, достаточно интересный и в то же время спорный вопрос.

    Как таковой, на странице библиотеки libiconv, в списке поддерживаемых кодировок можно встретить только cp1251 — это да. Однако на серверах Microsoft обычно поддерживается windows-1251.

    Впрочем, всё это вопрос алиасов. Так что и тот и другой варианты должны работать. Если тема вам интересна, думаю будет полезна ссылочка на обсуждения: cp1251 vs windows-1251 — правда, как я понимаю, там идёт речь о почтовых кодировках. Так что не исключаю ошибки в своих выводах ;-)


Popular links

Copyright © since 2006 Курилка.co.ua,
powered by WordPress