Фильтрация переменных в php

Фильтрация переменных в php
Блог
02.08.2019 09:31:00

Часто требуется проверить значение переменной на соответствие определенному фильтру. Например, Вы из формы получаете электронную почту, и должны убедиться что она написана правильно, что она валидна. Можно это делать через JS, а можно и в обработчике самой формы через PHP. Такой вариант мы и рассмотрим.

Для этого мы будем использовать функцию filter_var, которая фильтрует переменную с помощью определенного фильтра.

filter_var ( mixed $variable [, int $filter = FILTER_DEFAULT [, mixed $options ]] ) : mixed

Согласно документации она принимает следующие параметры.

variable

Значение переменной для фильтрации. Обратите внимание, что скалярные значения перед фильтрацией преобразуются к строкам.

filter

Идентификатор (ID) применяемого фильтра. На странице Типы фильтров приведен список доступных фильтров.

Если не указан, то используется FILTER_DEFAULT, который равнозначен FILTER_UNSAFE_RAW. Это значит, что по умолчанию не применяется никакого фильтра.

options

Ассоциативный массив параметров либо логическая дизъюнкция (операция ИЛИ) флагов. Если фильтр принимает параметры, флаги могут быть указаны в элементе массива "flags". Для фильтра "callback" должен быть указан тип callable. Фильтр "callback" должен принимать один аргумент, значение для фильтрации, и возвращать значение после фильтрации.

Нас интересует параметр filter. Если он не задан, фильтрация не произойдет. Какие есть варианты фильтров?

Их 4 типа: 

  • Фильтры валидации данных

  • Очищающие фильтры

  • Остальные фильтры

  • Флаги, используемые в фильтрах


1) Фильтры валидации данных. Мы посмотрим пару значений.

FILTER_VALIDATE_BOOLEAN - проверяет на логическое значение. Если он увидит в строке значение "1", "true", "on" и "yes" - то будет true, в других случая false.

FILTER_VALIDATE_EMAIL - Проверяет, что значение является корректным e-mail.


2) Очищающие фильтры. Их немного, но посмотрим одну.

FILTER_SANITIZE_STRING - Удаляет теги, при необходимости удаляет или кодирует специальные символы.

Согласитесь по описанию она похоже на функцию strip_tags, но не совсем. Посмотрим пример.

<?
$smaller = "not a tag < 5";
echo strip_tags($smaller);    // -> not a tag < 5
echo filter_var ( $smaller, FILTER_SANITIZE_STRING); // -> not a tag
?>
Как видите, она может удалять специальные символы

3) Остальные фильтры. Это когда мы задаем свою функцию обработки для фильтра. По сути она имеет только одно значение FILTER_CALLBACK.

Теперь рассмотрим применения фильтра на примере проверки электронной почты.
<?
	$email = 'info@site-ontop.ru';
	$valid = filter($email, FILTER_VALIDATE_EMAIL);
	if ($valid){
		echo "Почта валидная";
	}else{
		echo "Почта не валидная";
	}

?>

Скрипт покажет, что такая почта валидная. Теперь давайте ошибемся в почте

<?
	$email = 'info@site-ontop';
	$valid = filter($email, FILTER_VALIDATE_EMAIL);
	if ($valid){
		echo "Почта валидная";
	}else{
		echo "Почта не валидная";
	}

?>

Скрипт покажет, что почта не валидна.

Так что при создании формы можно сделать проверку данных и через JS и через PHP.

Что я предлагаю

Создам для Вас -

  • Уникальный адаптивный дизайн
  • Заключение договора

Заполните форму