WordPress как на ладони

sanitize_text_field()WP 2.9.0

Очищает переданную строку оставляя чистый текст: без HTML тегов, переносов строк и т.д.

Этой функцией принято очищать строки сохраняемые в базу данных (передаваемые из поля input), иногда при получении из БД.

Что делает функция:
  1. Проверяет ошибки в кодировке UTF-8.
  2. Конвертирует одиночный знак < в HTML сущность.
  3. Удалят все теги.
  4. Удаляет переносы строк (\r\n), табуляцию (\t) и невидимые символы пробела.
  5. Удаляет пробелы на концах строки - trim().
  6. Заменяет несколько пробелов на одни.
  7. Удаляет октеты: %[a-f0-9]{2}.
Чем отличаются esc_html() и sanitize_text_field():

esc_html() менее жесткая — она только переводит HTML символы и сущности в видимый текст, так, чтобы браузер не обрабатывал текст как HTML, т.е. сохраняет все данные, но изменят их для вывода на экран.

sanitize_text_field() — удаляет все HTML символы, переносы строк, табуляции и HTML сущности. Функция оставляет чистый текст, т.е. функция делает все, чтобы значение поля input было безопасно для сохранения.

Используйте sanitize_textarea_field(), когда нужно очистить строку, но при этом оставить переносы строк.

Основа для: wc_clean()
1 раз — 0.000001 сек (скорость света) | 50000 раз — 0.20 сек (очень быстро) | PHP 7.0.19, WP 5.0.2
Хуки из функции

Возвращает

Строку. Очищенную строку.

Использование

sanitize_text_field( $str );
$str(строка)
Строка, которую нужно очистить.

Примеры

0

#1 Как работает функция

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" }
0

#2 Использование функции в input

Этот пример, показывает как использовать функцию в теге INPUT. Предположим, что мы принимаем $_POST запрос со значением поля:

<input type="text" name="str" value="<?php echo esc_attr( sanitize_text_field( $_POST['str'] ) ) ?>" />

Заметки

Список изменений

С версии 2.9.0 Введена.

Код sanitize_text_field() WP 6.4.3

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 );
}
5 комментариев
    Войти