sanitize_text_field() WP 2.9
Очищает строку передаваемую из поля input (обычно при сохранении в базу данных) или при получении из БД.
Удаляет всё лишнее, оставляя чистый текст: без тегов, переносов строк и т.д.
Что делает функция:
- Проверяет ошибки в кодировке UTF-8;
- Конвертирует одиночный знак < в HTML сущность;
- Удалят все теги;
- Удаляет переносы строк (
\r\n
), табуляцию (\t
) и невидимые символы пробела; - Удаляет пробелы на концах строки.
- Заменяет несколько пробелов на одни.
- Удаляет октеты: %[a-f0-9]{2}.
Чем отличаются esc_html() и sanitize_text_field():
esc_html() менее жесткая — она только переводит HTML символы и сущности в видимый текст, так, чтобы браузер не обрабатывал текст как HTML, т.е. сохраняет все данные и делает их читаемыми.
sanitize_text_field() — удаляет все HTML символы, переносы строк, табуляции и HTML сущности. Функция оставляет чистый текст, т.е. функция делает все, чтобы значение поля input было безопасно для сохранения.
Является основой для:
wc_clean()
Работает на основе:
wp_strip_all_tags()
, wp_check_invalid_utf8()
✈ 1 раз = 0.000001с = скорость света | 50000 раз = 0.20с = очень быстро | PHP 7.0.19, WP 5.0.2
Хуки из функции
Возвращает
Очищенную строку.
Использование
sanitize_text_field( $str );
- $str(строка)
- Строка, которую нужно очистить.
Примеры
#1 Как работает функция
sanitize_text_field( 'Проверим, <em>как</em> очищается строка <br>. ' ); //> 'Проверим, как очищается строка .' sanitize_text_field( 'http://example.com/foo.php#bar' ); //> 'http://example.com/foo.php#bar' sanitize_text_field( 'foo <strong> bar' ); //> foo bar sanitize_text_field( 123 ); //> string(3) "123" sanitize_text_field( 'http://test.ru/%D0%BF%D1%80%D0%B8%D0%B2%D0%B5%D1%82/' ); //> http://test.ru// sanitize_text_field( '{ "Vlad Mir": "https://profiles.wordpress.org/sephp", "Kama": "https://wp-kama.ru" }' ); //> { "Vlad Mir": "https://profiles.wordpress.org/sephp", "Kama": "https://wp-kama.ru" }
#2 Использование функции в input
Этот пример, показывает как использовать функцию в теге INPUT. Предположим, что мы принимаем $_POST
запрос со значением поля:
<input type="text" name="str" value="<?php echo esc_attr( sanitize_text_field( $_POST['str'] ) ) ?>" />
Заметки
- Смотрите: sanitize_textarea_field()
- Смотрите: wp_check_invalid_utf8()
- Смотрите: wp_strip_all_tags()
Список изменений
С версии 2.9.0 | Введена. |
Код sanitize text field:
wp-includes/formatting.php
WP 5.3
Cвязанные функции
Из метки: sanitize_ (очистка)
- sanitize_email()
- sanitize_file_name()
- sanitize_html_class()
- sanitize_key()
- sanitize_meta()
- sanitize_mime_type()
- sanitize_option()
Не стоит использовать для санитизации таких ссылок:
Добавил пример.
Плохой пример. Инпут поломается, если пользователь введет текст с двойными кавычками.
Да, вы правы - 100% так юзать нельзя, не понимаю как я такое мог написать
Дополнил этот пример! Спасибо!