Функция SANITIZE_TEXT_FIELD: очистка текста от HTML-тегов, переносов строк

# Функция 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()

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *