Форматирование текста: Как написать PHP-функцию clean($variable), которая обрезает пробелы и нейтрализует XSS-символы во входящих данных?

Защита входящих данных — одна из ключевых задач при разработке веб-приложений на PHP. Функция clean($variable) позволяет одновременно решить две задачи: убрать лишние пробелы по краям строки и нейтрализовать потенциально опасные XSS-символы (например, угловые скобки, кавычки и амперсанды).

## Базовая реализация функции clean()

php
function clean($variable) {
// Шаг 1: Приводим к строке на случай нестроковых типов
$variable = (string) $variable;

// Шаг 2: Обрезаем пробелы с обоих концов строки
$variable = trim($variable);

// Шаг 3: Нейтрализуем XSS-символы
$variable = htmlspecialchars($variable, ENT_QUOTES | ENT_HTML5, ‘UTF-8’);

return $variable;
}

## Что делает каждый шаг?

**trim()** — стандартная функция PHP, которая удаляет пробелы, табуляции, переносы строк и другие пробельные символы с начала и конца строки. Это предотвращает ситуации, когда пользователь случайно (или намеренно) вводит строку вида « admin ».

**htmlspecialchars()** — преобразует специальные HTML-символы в их безопасные HTML-сущности:
— « → `>`
— `»` → `"`
— `’` → `'`
— `&` → `&`

Флаг **ENT_QUOTES** обеспечивает экранирование как двойных, так и одинарных кавычек. Флаг **ENT_HTML5** указывает на использование правил HTML5. Третий параметр `’UTF-8’` задаёт кодировку, что критично для корректной обработки кириллицы и других многобайтовых символов.

## Расширенная версия с дополнительной защитой

php
function clean($variable) {
if (is_array($variable)) {
return array_map(‘clean’, $variable);
}
$variable = (string) $variable;
$variable = trim($variable);
$variable = strip_tags($variable); // Удаляем HTML-теги полностью
$variable = htmlspecialchars($variable, ENT_QUOTES | ENT_HTML5, ‘UTF-8’);
return $variable;
}

Здесь добавлена рекурсивная обработка массивов и вызов **strip_tags()**, который полностью удаляет HTML и PHP-теги перед экранированием.

## Важные замечания

— Функцию следует применять **при выводе данных**, а не при записи в базу данных. Для БД используйте подготовленные запросы (PDO/MySQLi).
— Не используйте clean() для паролей — htmlspecialchars изменит строку и хеш не совпадёт.
— Для обработки URL дополнительно применяйте `filter_var($url, FILTER_SANITIZE_URL)`.
— В современных фреймворках (Laravel, Symfony) подобная очистка встроена в шаблонизаторы (Blade, Twig).

Правильное использование функции clean() — первый рубеж защиты от XSS-атак в PHP-приложениях.


Задайте вопрос нейросети

Не нашли ответ? Спросите ИИ — он подготовит развёрнутую статью.