Функция sanitize_textarea_field()
очищает текстовые данные, полученные от пользователя через поля многострочного ввода (textarea
), для безопасного хранения в базе данных. В отличие от sanitize_text_field()
, она сохраняет переносы строк, пробелы и другие символы, которые характерны для полей textarea
, но при этом убирает HTML-теги и вредоносные символы.
sanitize_textarea_field( string $str ): string
Параметры
- $str (строка, обязательный) — Строка, которую нужно очистить перед сохранением.
Возвращаемое значение
Возвращает строку, очищенную от HTML-тегов и лишних символов, но с сохранением переносов строк и пробелов.
Основные возможности функции
- Конвертирует одинарный символ
<
в HTML-сущность<
. - Убирает все HTML-теги и сущности.
- Обрезает лишние пробелы в начале и конце строки.
- Проверяет строку на ошибки в кодировке UTF-8.
Отличие от esc_textarea()
Функция esc_textarea()
используется для безопасного вывода текста в поле textarea
на экране, а sanitize_textarea_field()
— для очистки текста перед сохранением в базе данных.
Пример 1: Очистка пользовательского ввода с сохранением переносов строк
$text = "Привет, <b>WordPress</b>!
Это текстовый ввод с символом < и HTML-тегами.";
$sanitized_text = sanitize_textarea_field($text);
echo $sanitized_text;
// Результат:
// Привет, WordPress!
// Это текстовый ввод с символом < и HTML-тегами.
В этом примере HTML-теги <b>
и символ <
заменяются на безопасные эквиваленты.
Пример 2: Сохранение текста с переносами строк и пробелами
$multiline_text = "Первая строка текста.
Вторая строка с пробелами и символами <html>";
$sanitized_multiline_text = sanitize_textarea_field($multiline_text);
echo $sanitized_multiline_text;
// Результат:
// Первая строка текста.
// Вторая строка с пробелами и символами <html
Здесь функция сохраняет переносы строк и пробелы внутри текста, что позволяет сохранить форматирование.
Пример 3: Очистка текста на других языках
Функция также работает с текстом на любом языке, включая символы Unicode.
$text_unicode = "ビットコインと <br> 比特币 (Bitcoin и криптовалюта)";
$sanitized_unicode = sanitize_textarea_field($text_unicode);
echo $sanitized_unicode;
// Результат:
// ビットコインと 比特币 (Bitcoin и криптовалюта)
Все HTML-теги удаляются, но символы других языков остаются без изменений.
Заключение
Функция sanitize_textarea_field()
является надежным способом защиты данных при сохранении пользовательского ввода. Она убирает HTML-теги и вредоносные символы, сохраняя при этом переносы строк и пробелы, что делает её идеальной для работы с многострочными полями.