# Функция SANITIZE_TEXT_FIELD() │ WP 2.9.0
Функция sanitize_text_field()
очищает переданную строку, остаются только чистый текст: без HTML-тегов, переносов строк и лишних пробелов.
Эта функция используется для очистки строк перед их сохранением в базе данных (например, когда данные поступают из полей ввода) и иногда при получении данных из базы.
**Важно!** Эта функция не защищает от SQL-инъекций! При сохранении в базу данных строку дополнительно нужно обработать одной из функций: esc_sql()
или $wpdb->prepare
.
## Что делает функция?
1. Проверяет на наличие некорректной кодировки UTF-8.
2. Преобразует одинарный символ <
в HTML-сущности.
3. Удаляет все теги.
4. Убирает переносы строк (rn
), табуляции (t
) и лишние пробелы.
5. Удаляет пробелы в начале и конце строки с помощью функции trim()
.
6. Заменяет множественные пробелы на один.
7. Очищает октеты: %[a-f0-9]{2}
.
## Чем отличается esc_html()
от sanitize_text_field()
?
- esc_html()
— только переводит HTML-символы и сущности в видимый текст, чтобы браузер не обрабатывал текст как HTML. Это ��елает данные читаемыми.
- sanitize_text_field()
— удаляет все HTML-символы, переносы строк, табуляции и HTML-сущности. Эта функция возвращает пустой текст, т.е. делает все, чтобы значение поля ввода было безопасным для сохранения.
### Когда использовать?
Используйте sanitize_textarea_field()
если хотите очистить строку, но сохранить переносы строк.
## Применение функции
Функция может использоваться следующим образом:
```php
sanitize_text_field( $str );
Где:
$str
(строка, обязательный параметр) — строка для очистки.
Примеры использования
Пример 1: Демонстрация работы функции
sanitize_text_field( 'Проверка как строка очищается
.' );
//> 'Проверка как строка очищается.'
sanitize_text_field( 'Юникод символы 😃 🐻' );
// Юникод символы 😃 🐻
echo sanitize_text_field( 'Строка с "цитатой" и 'одинарной'' );
// Строка с "цитатой" и 'одинарной'
sanitize_text_field( 123 );
//> string(3) "123"
sanitize_text_field( 'http://example.com/foo.php#bar' );
//> 'http://example.com/foo.php#bar'
Пример 2: Использование функции в теге INPUT
Это показывает, как применять функцию в теге INPUT. Предположим, мы принимаем запрос $_POST
с полем:
Примечания
- Смотрите:
sanitize_textarea_field()
- Смотрите:
wp_check_invalid_utf8()
- Смотрите:
wp_strip_all_tags()
Изменения
Функция была введена в версии 2.9.0.
Код функции
Ниже представлен код функции из файла wp-includes/formatting.php
:
function sanitize_text_field( $str ) {
$filtered = _sanitize_text_fields( $str, false );
/**
* Фильтрует очищенную строку текстового поля.
*
* @since 2.9.0
*
* @param string $filtered Очищенная строка.
* @param string $str Строка до очистки.
*/
return apply_filters( 'sanitize_text_field', $filtered, $str );
}
Связанные функции
Вот некоторые из функций, которые также занимаются очисткой данных:
sanitize_email()
sanitize_file_name()
sanitize_html_class()
sanitize_key()
sanitize_meta()
sanitize_mime_type()
sanitize_option()
sanitize_post()
sanitize_post_field()
sanitize_sql_orderby()
sanitize_term()
sanitize_term_field()
sanitize_textarea_field()
sanitize_title()
sanitize_title_for_query()
sanitize_title_with_dashes()
sanitize_url()
sanitize_user()
wc_clean()
wp_check_invalid_utf8()