Функция wp_check_invalid_utf8()
проверяет текст на наличие недопустимых символов UTF-8, помогая фильтровать некорректные строки и предотвратить ошибки отображения. Она может также удалять некорректные символы, если задан флаг $strip
.
wp_check_invalid_utf8( string $text, bool $strip = false ): string
Параметры
- $text (строка) — обязательный параметр. Строка, которую необходимо проверить на валидность.
- $strip (логическое значение) — необязательный параметр. Если задано
true
, функция попытается удалить недопустимые UTF-8 символы. По умолчанию значение равноfalse
.
Возвращаемое значение
Возвращает строку с проверенным и, при необходимости, очищенным от некорректных символов текстом.
Особенности функции
- Зависимость от кодировки блога — функция выполняет проверку только в случае, если кодировка блога указана как UTF-8 (или его варианты).
- Удаление недопустимых символов — при установке
$strip
вtrue
, функция удаляет все некорректные символы UTF-8, что может быть полезно для очистки пользовательского ввода. - Используется в других функциях — является частью внутреннего механизма WordPress, поддерживая функции
sanitize_text_field()
иesc_html()
.
Пример 1: Проверка строки с некорректными UTF-8 символами
Этот пример показывает, как функция отфильтровывает строки, содержащие некорректные UTF-8 символы.
$text = "Текст с недопустимыми символами: \xc3\x28";
$checked_text = wp_check_invalid_utf8( $text );
echo htmlspecialchars( $checked_text );
Результат:
Текст с недопустимыми символами:
В данном случае, некорректные символы UTF-8 были удалены, и вывод строки не содержит недопустимых символов.
Пример 2: Удаление некорректных символов с флагом $strip = true
Когда $strip
установлен в true
, функция удаляет недопустимые символы. Этот пример демонстрирует, как функция обрабатывает текст с некорректными и корректными символами:
$text = "Правильный текст ñ и некорректный \xf0\x28";
$clean_text = wp_check_invalid_utf8( $text, true );
echo htmlspecialchars( $clean_text );
Результат:
Правильный текст ñ и некорректный
Некорректный символ был удален, но символ ñ
остался, так как он допустим в UTF-8.
Пример 3: Проверка массива с примерами последовательностей UTF-8
Здесь мы создаем массив с примерами строк, содержащих корректные и некорректные UTF-8 символы, и проверяем их через wp_check_invalid_utf8()
.
$examples = [
'Допустимая ASCII' => "abc",
'Допустимая 2-байтовая последовательность' => "\xc3\xb1",
'Некорректная 2-байтовая последовательность' => "\xc3\x28",
'Некорректный идентификатор' => "\xa0\xa1",
'Допустимая 4-байтовая последовательность' => "\xf0\x90\x8c\xbc",
'Недопустимая 4-байтовая последовательность' => "\xf0\x28\x8c\xbc",
];
$results = [];
foreach ($examples as $key => $value) {
$results[$key] = wp_check_invalid_utf8( $value );
}
print_r($results);
В этом примере строки с некорректными последовательностями очищены, а допустимые оставлены без изменений.
Заключение
Функция wp_check_invalid_utf8()
— полезный инструмент для проверки строк на валидность UTF-8 и удаления некорректных символов. Она особенно полезна для очистки пользовательского ввода и обеспечивает совместимость с функциями, связанными с безопасностью текста в WordPress.