Очистка и проверка введенных пользователем данных — одна из наиболее распространенных задач в веб-приложении. Чтобы упростить эту задачу в PHP есть встроенные фильтры, которое вы можете использовать для очистки или проверки данных, таких как адреса электронной почты, URL-адреса, IP-адреса и т. д.

Для проверки данных с помощью расширения фильтра вам необходимо использовать PHP-функцию filter_var(). Базовый синтаксис этой функции может быть задан следующим образом:

filter_var(variable, filter, options)

Эта функция принимает три параметра, последние два из которых являются необязательными. Первый параметр — это значение, которое нужно отфильтровать, второй параметр — это идентификатор применяемого фильтра, а третий параметр — это массив параметров, связанных с фильтром. Посмотрим, как это работает.

Очистка строк

В следующем примере выполняется очистка строки путем удаления из нее всех HTML-тегов:

<?php
// Пример комментария пользователя
$comment = "<h1>Hey there! How are you doing today?</h1>";

// Очистка и печать строки комментария
$sanitizedComment = filter_var($comment, FILTER_SANITIZE_STRING);
echo $sanitizedComment; // Выводит: Hey there! How are you doing today?
?>

Проверка целочисленных значений

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

<?php
// Пример целочисленного значения
$int = 20;

// Проверка целочисленного значения
if(filter_var($int, FILTER_VALIDATE_INT)){
    echo "Переменная <b>$int</b> является действительным целым числом";
} else{
    echo "Переменная <b>$int</b> не является действительным целым числом";
}
?>

В приведенном выше примере, если переменная $int установлена в 0, код примера отобразит, что это недопустимое целочисленное значение. Чтобы решить эту проблему, вам необходимо явно проверить значение 0, как показано ниже:

<?php
// Пример целочисленного значения
$int = 0;

// Проверка целочисленного значения
if(filter_var($int, FILTER_VALIDATE_INT) === 0 || filter_var($int, FILTER_VALIDATE_INT)){
    echo "Переменная <b>$int</b> является действительным целым числом";
} else{
    echo "Переменная <b>$int</b> не является действительным целым числом";
}
?>

Проверка IP-адреса

В следующем примере будет проверяться, является ли значение действительным IP-адресом или нет.

<?php
// Пример IP-адреса
$ip = "172.16.254.1";

// Проверка IP-адреса
if(filter_var($ip, FILTER_VALIDATE_IP)){
    echo "Переменная <b>$ip</b> действительный IP-адрес";
} else {
    echo "Переменная <b>$ip</b> не действительный IP-адрес";
}
?>

Вы можете дополнительно применить проверку для IP-адресов IPV4 или IPV6, используя флаги FILTER_FLAG_IPV4 и FILTER_FLAG_IPV6 соответственно. Вот пример:

<?php
// Пример IP-адреса
$ip = "172.16.254.1";

// Проверка IP-адреса
if(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)){
    echo "Переменная <b>$ip</b> это действительный адрес IPV6";
} else {
    echo "Переменная <b>$ip</b> не является действительным адресом IPV6";
}
?>

Очистка и проверка адреса электронной почты

В следующем примере показано, как очистить и проверить адрес электронной почты.

<?php
// Образец электронного адреса
$email = "someone@@example.com";

// Удаляем из электронной почты все недопустимые символы
$sanitizedEmail = filter_var($email, FILTER_SANITIZE_EMAIL);

// Проверка адреса электронной почты
if($email == $sanitizedEmail && filter_var($email, FILTER_VALIDATE_EMAIL)){
    echo "Переменная $email это действительный адрес электронной почты";
} else{
    echo "Переменная $email не действительный адрес электронной почты";
}
?>

Фильтр FILTER_SANITIZE_EMAIL удаляет все недопустимые символы из предоставленной строки адреса электронной почты, кроме букв, цифр и символов !#$%&'*+-=?^_`{|}~@.[].

Очистка и проверка URL-адреса

В следующем примере показано, как очистить и проверить URL-адрес.

<?php
// Пример URL-адреса веб-сайта
$url = "http:://www.example.com";

// Удаляем все недопустимые символы из URL
$sanitizedUrl = filter_var($url, FILTER_SANITIZE_URL);

// Проверка URL-адрес веб-сайта
if($url == $sanitizedUrl && filter_var($url, FILTER_VALIDATE_URL)){
    echo "Переменная $url действительный URL-адрес веб-сайта";
} else{
    echo "Переменная $url недействительный URL-адрес веб-сайта";
}
?>

Фильтр FILTER_SANITIZE_URL удаляет все недопустимые символы из предоставленной строки URL, кроме букв, цифр и символов $-_.+!*'(),{}|\\^~[]`<>#%";/?:@&=

Вы также можете проверить, содержит ли URL-адрес строку запроса используя флаг FILTER_FLAG_QUERY_REQUIRED, как показано в следующем примере:

<?php
// Пример URL-адреса веб-сайта
$url = "http://www.example.com?topic=filters";

// Проверяем URL-адрес веб-сайта для строки запроса
if(filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_QUERY_REQUIRED)){
    echo "Переменная <b>$url</b> содержит строку запроса";
} else{
    echo "Переменная <b>$url</b> не содержит строку запроса";
}
?>

Подробнее см. Руководство по URL-адресам HTML, чтобы узнать о различных компонентах URL-адреса.

Проверка целых чисел в диапазоне

В следующем примере проверяется, является ли предоставленное значение целым числом или нет, а также находится ли оно в диапазоне от 0 до 100 или нет.

<?php
// Пример целочисленного значения
$int = 75;

// Проверка целочисленного значения
if(filter_var($int, FILTER_VALIDATE_INT, array("options" => array("min_range" => 0,"max_range" => 100)))){
    echo "Переменная <b>$int</b> находится в диапазоне от 0 до 100";
} else{
    echo "Переменная <b>$int</b> is not within the range of 0 to 100";
}
?>

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 5 / 5. Количество оценок: 1

Оценок пока нет. Поставьте оценку первым.