При работе с формами или другими данными, которые вы можете получать из БД или JSON ответах сервера важно проверять входящие значения на корректность. Например, где-то надо проверить, что пришло целое число, а где-то ссылку.
С большинством задач отлично справляется функция filter_var().
Синтаксис: filter_var (переменная [, фильтр [, опции фильтра ]] );
Чаще всего в этой функции подставляют "маски" фильтров, на которые нужно проверить переменнные. Но лучше всего это понять на примерах:
Проверяем на корректность ввод email-а
if(filter_var(trim($_POST['email']), FILTER_VALIDATE_EMAIL)) echo '<br>Email <i>корректен</i>'; else echo '<br>Email не корректен!';
//au@main.com, --12@site.s - корректны, сайт@ага.рф - не корректны
Проверка целого числа с диапазоном. Если убрать , array("options" => array("min_range"=>5, "max_range"=>10)) - то будет проверять только на целое/не целое число
if (filter_var(trim($_POST['intss']), FILTER_VALIDATE_INT, array("options" => array("min_range"=>5, "max_range"=>10))) === false) {
echo("<br>Значение переменной не входит в допустимый диапазон"); }
else { echo("<br>Значение <i>переменной в рамках допустимого диапазона</i>"); }
//7, 8 - корректны, 7.8, 12 - не корректны
Проверка корректности ссылки (она должна обязательно быть с http://)
if(filter_var($_POST['domen'], FILTER_VALIDATE_URL)) { echo ' <i>корректен</i>';
else echo ' введен не корректно!';
//http://ya.ru - корректен, ya.ru - не корректен
Проверка плавающего числа с диапазоном.
if (filter_var(trim($_POST['float']), FILTER_VALIDATE_FLOAT)) {
echo("Yes"); }
else { echo("No"); }
//1, 0, 1.1, 1.4 - корректны; 1,3, 1,000 - не корректны
Также существуют другие проверки:
FILTER_VALIDATE_IP - корректность IP адреса
FILTER_VALIDATE_BOOLEAN - корректность булевого значения
FILTER_VALIDATE_REGEXP - проверяет регулярку
Кстати о регулярных выражениях и их практических примерах я писал ранее.
Таким образом, filter_var() позволяет проверять формат данных без помощи регулярных выражений. Используется это функция не часто, так как либо о ней не знают, либо больше доверяют регулярным выражениям. К тому же она не работает с кириллицей.