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 Демо очистки
sanitize_text_field( 'Проверим, <em>как</em>
очищается строка <br>. ' );
// 'Проверим, как очищается строка .'
sanitize_text_field( 'Юникод симоволы 💻 🖥 ' );
// Юникод симоволы 💻 🖥
sanitize_text_field( '🖱 ⌨️ 🖲 📟 🔒 🔓 🔑 🗝 🛡 📣 📢 🔔 ☢️' );
// 🖱 ⌨️ 🖲 📟 🔒 🔓 🔑 🗝 🛡 📣 📢 🔔 ☢️ (юникод)
echo sanitize_text_field( 'String with "qoute" and \'single\'' );
// String with "qoute" and 'single'
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() sanitize text field WP 6.9.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 );
}