# wp_check_invalid_utf8()

URL: https://chugunov.pro/api-wordpress/functions/wp_check_invalid_utf8/
Проверено на WordPress 6.9, обновлено 06.08.2026.
Источник: независимый русскоязычный справочник chugunov.pro. Не является официальной документацией WordPress.

Тип: функция.
Появился в версии: 2.8.0.

## Сигнатура

```php
wp_check_invalid_utf8( string $text, bool $strip = false ): string
```

## Описание

Внимание! Эта функция выполняет свою работу только если blog_charset установлен в UTF-8. Для всех остальных значений она возвращает входной текст без изменений.
Внимание! Если не указано иное, функция возвращает пустую строку, когда входные данные содержат любые последовательности недопустимого UTF-8. Чтобы заменить недопустимые последовательности байтов, передайте true в необязательном параметре $strip.
Стоит рассмотреть использование wp_scrub_utf8(), которое не зависит от значения blog_charset.
Пример:
// `blog_charset` равен `latin1`, поэтому здесь входные данные возвращаются без изменений.
$every_possible_input === wp_check_invalid_utf8( $every_possible_input );

// Корректные строки проходят без изменений.
'test' === wp_check_invalid_utf8( 'test' );

$invalid = "the byte xC0 is never allowed in a UTF-8 string.";

// Недопустимые строки отклоняются полностью.
'' === wp_check_invalid_utf8( $invalid );

// «Удаление» недопустимых последовательностей вместо этого даёт символ замены.
"the byte \u{FFFD} is never allowed in a UTF-8 string." === wp_check_invalid_utf8( $invalid, true );
'the byte � is never allowed in a UTF-8 string.' === wp_check_invalid_utf8( $invalid, true );

## Параметры

- `$text` `string` — обязательный. Строка, которая, как предполагается, закодирована в UTF-8, если только blog_charset не задаёт другую кодировку.
- `$strip` `bool` — необязательный, по умолчанию `false`. Заменять ли недопустимые последовательности байтов символом замены Unicode (U+FFFD �). При значении по умолчанию false для недопустимых UTF-8 данных возвращается пустая строка.

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

`string`

## Исходный код

Файл: `wp-includes/formatting.php:1127`

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

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

	// Store the site charset as a static to avoid multiple calls to get_option().
	static $is_utf8 = null;
	if ( ! isset( $is_utf8 ) ) {
		$is_utf8 = is_utf8_charset();
	}

	if ( ! $is_utf8 || wp_is_valid_utf8( $text ) ) {
		return $text;
	}

	return $strip
		? wp_scrub_utf8( $text )
		: '';
}
```

## История изменений

- 6.9.0 — Stripping replaces invalid byte sequences with the Unicode replacement character U+FFFD (�).
- 2.8.0 — Introduced.

## Связанные

Использует: [`wp_is_valid_utf8`](https://chugunov.pro/api-wordpress/functions/wp_is_valid_utf8/), [`wp_scrub_utf8`](https://chugunov.pro/api-wordpress/functions/wp_scrub_utf8/), [`is_utf8_charset`](https://chugunov.pro/api-wordpress/functions/is_utf8_charset/).
Используется в: [`esc_xml`](https://chugunov.pro/api-wordpress/functions/esc_xml/), [`_sanitize_text_fields`](https://chugunov.pro/api-wordpress/functions/_sanitize_text_fields/), [`esc_js`](https://chugunov.pro/api-wordpress/functions/esc_js/), [`esc_html`](https://chugunov.pro/api-wordpress/functions/esc_html/), [`esc_attr`](https://chugunov.pro/api-wordpress/functions/esc_attr/).

Оригинал в официальной документации: https://developer.wordpress.org/reference/functions/wp_check_invalid_utf8/
