Будь-який розробник стикається зі створенням форм, а разом з цим приходить і необхідність перевіряти введені користувачем дані. Можна використовувати регулярні вирази, а можна обійтися і без них в деяких випадках тому регулярні вирази в складних варіаціях вимогливі до ресурсів.
Для перевірки валідності, наприклад, 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('info@yandex.ru', FILTER_VALIDATE_EMAIL));
var_dump(filter_var('info@yandex', FILTER_VALIDATE_EMAIL));
var_dump(filter_var('www.artkiev.com', FILTER_VALIDATE_URL, FILTER_FLAG_SCHEME_REQUIRED));
var_dump(filter_var('http://site.com', FILTER_VALIDATE_URL, FILTER_FLAG_SCHEME_REQUIRED));
Дані, які поверне скрипт будуть наступними:
string(17) "info@yandex.ru"
bool(false)
bool(false)
string(18) "http://site.com"
Як Ви вже встигли помітити - функція повертає false якщо дані криві або значення після перевірки.
Насправді можна перевіряти числа на певний проміжок значень, вказувати які дані повертати в разі невдалої перевірки. Останнє може стати в нагоді для перевірки форм, які заповнювати необов'язково.