sanitize_text_field()
Очищает переданную строку оставляя чистый текст: без HTML тегов, переносов строк и т.д.
Этой функцией принято очищать строки сохраняемые в базу данных (передаваемые из поля input), иногда при получении из БД.
Эта функция не защищает от SQL иньекций! При сохранении в БД, строку дополнительно нужно будет обработать одной из функций: esc_sql(), $wpdb->prepare.
Что делает функция:
- Проверяет ошибки в кодировке UTF-8.
- Конвертирует одиночный знак
<
в HTML сущность. - Удалят все теги.
- Удаляет переносы строк (\r\n), табуляцию (\t) и невидимые символы пробела.
- Удаляет пробелы на концах строки - trim().
- Заменяет несколько пробелов на одни.
- Удаляет октеты:
%[a-f0-9]{2}
.
Чем отличаются esc_html() и sanitize_text_field():
esc_html() менее жесткая — она только переводит HTML символы и сущности в видимый текст, так, чтобы браузер не обрабатывал текст как HTML, т.е. сохраняет все данные, но изменят их для вывода на экран.
sanitize_text_field() — удаляет все HTML символы, переносы строк, табуляции и HTML сущности. Функция оставляет чистый текст, т.е. функция делает все, чтобы значение поля input было безопасно для сохранения.
Используйте sanitize_textarea_field(), когда нужно очистить строку, но при этом оставить переносы строк.
Читайте также: Функции валидации данных.
Хуки из функции
Возвращает
Строку
. Очищенную строку.
Использование
sanitize_text_field( $str );
- $str(строка)
- Строка, которую нужно очистить.
Примеры
#1 Использование функции в input
Этот пример, показывает как использовать функцию в теге INPUT. Предположим, что мы принимаем $_POST запрос со значением поля:
<input type="text" name="str" value="<?php echo esc_attr( sanitize_text_field( $_POST['str'] ) ) ?>" />
#2 Как работает функция
sanitize_text_field( 'Проверим, <em>как</em> очищается строка <br>. ' ); // 'Проверим, как очищается строка .' sanitize_text_field( 'Юникод симоволы 😃 🐻' ); // Юникод симоволы 😃 🐻 sanitize_text_field( '𝗦𝗣𝗜𝗞𝗘𝗦 𝗕𝗥𝗔𝗜𝗡𝗟𝗔𝗜𝗦𝗦' ); // 𝗦𝗣𝗜𝗞𝗘𝗦 𝗕𝗥𝗔𝗜𝗡𝗟𝗔𝗜𝗦𝗦 (юникод) 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" }
Заметки
- Смотрите: sanitize_textarea_field()
- Смотрите: wp_check_invalid_utf8()
- Смотрите: wp_strip_all_tags()
Список изменений
С версии 2.9.0 | Введена. |
Код sanitize_text_field() sanitize text field WP 6.7.1
function sanitize_text_field( $str ) { $filtered = _sanitize_text_fields( $str, false ); /** * Filters a sanitized text field string. * * @since 2.9.0 * * @param string $filtered The sanitized string. * @param string $str The string prior to being sanitized. */ return apply_filters( 'sanitize_text_field', $filtered, $str ); }