Проверка недопустимых символов UTF-8 в WordPress: WP_CHECK_INVALID_UTF8()

WP_CHECK_INVALID_UTF8() │ WP 2.8.0

Функция WP_CHECK_INVALID_UTF8() используется для проверки строк на наличие недопустимых символов UTF-8. Это полезно для обеспечения корректности текстовых данных, которые вы хотите использовать в WordPress.

Где используется

Эта функция используется, например, в таких функциях как:

  • sanitize_text_field()
  • esc_html()

Не содержит хуков (Hooks)

Возвращаемое значение

Функция возвращает строку — это текст, который был проверен на наличие допустимых символов UTF-8.

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

Чтобы использовать эту функцию, вы вызываете её с двумя параметрами: текстом (обязательный) и флагом, указывающим, нужно ли удалять недопустимые символы.

wp_check_invalid_utf8( $text, $strip );

Параметры

  • $text (string) — текст, который нужно проверить. Это обязательный параметр.
  • $strip (bool) — указывает, нужно ли удалять недопустимые символы UTF-8.
    • По умолчанию: false

Примеры использования

Чтобы лучше понять, как работает функция, рассмотрим несколько примеров:

$examples = [
    'Valid ASCII'                               => "a",
    'Valid 2 Octet Sequence'                    => "xc3xb1",  // ñ
    'Valid 3 Octet Sequence'                    => "xe2x82xa1",  // ₡
    'Valid 4 Octet Sequence'                    => "xf0x90x8cxbc",  // 𐌼
    'Invalid 2 Octet Sequence'                  => "xc3x28",
    'Invalid 3 Octet Sequence (in 2nd Octet)'   => "xe2x28xa1",
];

$result = [];
foreach ( $examples as $key => $value ) {
    $result[$key] = wp_check_invalid_utf8($value);
}

var_dump($result);

Результат выполнения

После выполнения приведенного выше кода вы получите следующий массив:

array(6) {
  ["Valid ASCII"]                             => string(1) "a"
  ["Valid 2 Octet Sequence"]                  => string(2) "ñ"
  ["Valid 3 Octet Sequence"]                  => string(3) "₡"
  ["Valid 4 Octet Sequence"]                  => string(4) "𐌼"
  ["Invalid 2 Octet Sequence"]                => string(0) ""
  ["Invalid 3 Octet Sequence (in 2nd Octet)"]=> string(0) ""
}

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

Вот краткое описание работы функции wp_check_invalid_utf8():

  • Сначала функция преобразует входные данные в строку.
  • Если строка пуста, она возвращает пустую строку.
  • Также она проверяет, поддерживает ли текущая кодировка UTF-8.
  • Если кодировка неподдерживаемая, возвращается исходная строка.
  • Функция проверяет, допустимы ли символы строки. Если нет, то в зависимости от параметра $strip может попытаться удалить недопустимые символы, если это возможно.

Код функции

Вот исходный код функции:

function wp_check_invalid_utf8( $text, $strip = false ) {
    $text = (string) $text;

    if ( 0 === strlen( $text ) ) {
        return '';
    }

    static $is_utf8 = null;
    if ( ! isset( $is_utf8 ) ) {
        $is_utf8 = is_utf8_charset();
    }
    if ( ! $is_utf8 ) {
        return $text;
    }

    static $utf8_pcre = null;
    if ( ! isset( $utf8_pcre ) ) {
        $utf8_pcre = @preg_match( '/^./u', 'a' );
    }
    if ( ! $utf8_pcre ) {
        return $text;
    }

    if ( 1 === @preg_match( '/^./us', $text ) ) {
        return $text;
    }

    if ( $strip && function_exists( 'iconv' ) ) {
        return iconv( 'utf-8', 'utf-8', $text );
    }

    return '';
}

Связанные функции

В WordPress есть множество других функций для работы с текстом. Вот некоторые из них:

  • sanitize_text_field()
  • esc_html()
  • sanitize_email()

Каждая из этих функций помогает очистить или отфильтровать текстовые данные для различных целей, обеспечивая безопасность и корректность информации.

Теперь вы знаете, как использовать функцию WP_CHECK_INVALID_UTF8() для проверки и обработки текстовых данных в WordPress.

Leave a Reply

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