Всем привет. Сегодня я хочу рассказать, что такое фильтры в php и как их использовать.

Что такое фильтры в 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 Там вы найдете все, что есть, а как их использовать я уже показал в этом материале.

Итак, на этом все. Надеюсь, что данная функция будет вам полезна. До свидания!