Любой разработчик сталкивается с созданием форм, а вместе с этим приходит и необходимость проверять введенные пользователем данные. Можно использовать регулярные выражения, а можно обойтись и без них в некоторых случаях т.к. регулярные выражения в сложных вариациях требовательны к ресурсам.
Для проверки валидности, например, email можно использовалось регулярное выражение:
^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$
Проверка данных теперь сводится к применению функции filter_var
. Как понятно из названия функции проверять мы можем не только на соответствие строки email’у, но и много чему еще: url, типы данных, IP-адрес и т.д. Данные обо всех фильтрах предоставит функция print_r(filter_list());
:
Array
(
[0] => int
[1] => boolean
[2] => float
[3] => validate_regexp
[4] => validate_url
[5] => validate_email
[6] => validate_ip
[7] => string
[8] => stripped
[9] => encoded
[10] => special_chars
[11] => unsafe_raw
[12] => email
[13] => url
[14] => number_int
[15] => number_float
[16] => magic_quotes
[17] => callback
)
Пример:
var_dump(filter_var('spama@artkiev.com', FILTER_VALIDATE_EMAIL));
var_dump(filter_var('spama@artkiev.com', FILTER_VALIDATE_EMAIL));
var_dump(filter_var('www.artkiev.com', FILTER_VALIDATE_URL, FILTER_FLAG_SCHEME_REQUIRED));
var_dump(filter_var('', FILTER_VALIDATE_URL, FILTER_FLAG_SCHEME_REQUIRED));
Данные, которые вернет скрипт будут следующими:
string(17) "spama@artkiev.com"
bool(false)
bool(false)
string(18) "http://artkiev.com"
Как Вы уже успели заметить — функция возвращает false если данные кривые или значение после проверки.
На самом деле можно проверять числа на определенный промежуток значений, указывать какие данные возвращать в случае неудачной проверки. Последнее может пригодиться для проверки форм, которые заполнять необязательно.