Что такое фильтры в PHP.
Всем привет. Сегодня я хочу рассказать, что такое фильтры в php и как их использовать.
Думаю, многие из вас, чтобы проверить, к примеру, email адрес, используют регулярные выражения. Но, думаю, не многим из вас нравится это делать, т.к. регулярные выражения очень сложные, да и можно ошибиться и не учесть чего-нибудь, а это может очень плохо сказаться на безопасности в будущем. Да, есть ситуации, где без них не обойтись, но, например, для проверки email адреса можно использовать фильтры. Итак, начнем.
У функции filter_var, которая и занимается фильтрацией, следующий синтаксис:
mixed filter_var ( mixed $variable [, int $filter = FILTER_DEFAULT [, mixed $options ]] )
Сначала передается переменная, которую мы будем проверять, затем константа, которая указывает, что мы проверяем, и опции.
Т.к. в начале статьи я привел пример с email адресом, то давайте с него и начнем.
$email = "fdfddffdfd.com";
$result = filter_var($email, FILTER_VALIDATE_EMAIL);
echo $result;
Нашей функции мы передали переменную с email адресом и константу FILTER_VALIDATE_EMAIL, обозначающую, что мы будем проверять переменную на корректность email. В результате нам вернется пустая строка, что значит, что email некорректен. Если же все будет правильно, то вернется переданный email.
Существуют также и другие константы. Например, для проверки url.
$url = "mysite.ru";
$result = filter_var($url, FILTER_VALIDATE_URL);
echo $result;
Здесь все то же самое, что и для email. Вот полный список всех констант:
- FILTER_VALIDATE_BOOLEAN - возвращает true для значений '1', 'true', 'on', yes'. В других случаях - false
- FILTER_VALIDATE_EMAIL - проверяет email адрес
- FILTER_VALIDATE_FLOAT - проверяет число с плавающей точкой
- FILTER_VALIDATE_INT - проверяет целое число
- FILTER_VALIDATE_IP - проверяет IP адрес
- FILTER_VALIDATE_REGEXP - проверяет на корректность регулярное выражение
- FILTER_VALIDATE_URL - проверяет url адрес
У них также могут быть флаги. К примеру, у IP есть флаги: FILTER_FLAG_IPV4, FILTER_FLAG_IPV6 и некоторые другие. Они обозначают, что проверять нужно IP адрес версии 4 или 6 в нашем случае. Записываются флаги в ассоциативный массив, который передается третим параметром.
$ip = "127.0.0.1";
$opt = array(
'flags' => 'FILTER_FLAG_IPV4'
);
$result = filter_var($ip, FILTER_VALIDATE_IP, $opt);
echo $result;
Вот мы и поговорили об фильтрах валидации, но есть еще и другие фильтры. Например, очищающие. Как понятно из названия, они что-то очищают. Вот пример:
$string = "Мой возраст 177 лет";
$result = filter_var($string, FILTER_SANITIZE_NUMBER_INT);
echo $result;
Фильтр FILTER_SANITIZE_NUMBER_INT очищает все, кроме цифр и знаков '+' и '-'.
Очищающие фильтры тоже чрезвычайно полезны. Рассматривать их все мы не будем, вы можете сделать это самостоятельно, перейдя по ссылке: http://php.net/manual/en/filter.filters.php Там вы найдете все, что есть, а как их использовать я уже показал в этой статье.
Итак, на этом все. Надеюсь, что данная функция будет вам полезна. До свидания!
-
- Михаил Русаков
Комментарии (3):
Так, штука корисна.. але, як на мене email треба просто перевіряти чи є там "@" i "." І випустіть уроки по shpinx
Ответить
Используйте регулярные выражения для проверки того или иного наличия символа.
Ответить
Либо, как по мне, еще удобнее сделать так: $str = гипотетический e-mail; $abc = substr_count($str,"@"); if($abc==1){код} else {echo "Введите корректный e-mail";}
Ответить
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.