mbstring_binary_safe_encoding()
Проверено на WordPress 6.9, обновлено Источник: WordPress Developer Resources.
Сигнатура
mbstring_binary_safe_encoding( bool $reset = false )
Описание
Когда mbstring.func_overload используется для многобайтовых кодировок, результаты strlen() и подобных функций учитывают символы utf8, из-за чего для двоичных данных возвращается неверная длина.
Эта функция переопределяет кодировку mbstring на двоично-безопасную, а затем возвращает её к ожидаемой пользователем кодировке через функцию reset_mbstring_encoding.
Функцию можно вызывать рекурсивно, однако каждый вызов mbstring_binary_safe_encoding() должен сопровождаться таким же числом вызовов reset_mbstring_encoding().
Смотрите alsoreset_mbstring_encoding()
Оригинал (английский)
When mbstring.func_overload is in use for multi-byte encodings, the results from strlen() and similar functions respect the utf8 characters, causing binary data to return incorrect lengths.
This function overrides the mbstring encoding to a binary-safe encoding, and resets it to the users expected encoding afterwards through the reset_mbstring_encoding function.
It is safe to recursively call this function, however each mbstring_binary_safe_encoding() call must be followed up with an equal number of reset_mbstring_encoding() calls.
Параметры
$reset
bool
необязательный
= false
Исходный код
wp-includes/functions.php:7688
function mbstring_binary_safe_encoding( $reset = false ) {
static $encodings = array();
static $overloaded = null;
if ( is_null( $overloaded ) ) {
if ( function_exists( 'mb_internal_encoding' )
&& ( (int) ini_get( 'mbstring.func_overload' ) & 2 ) // phpcs:ignore PHPCompatibility.IniDirectives.RemovedIniDirectives.mbstring_func_overloadDeprecated
) {
$overloaded = true;
} else {
$overloaded = false;
}
}
if ( false === $overloaded ) {
return;
}
if ( ! $reset ) {
$encoding = mb_internal_encoding();
array_push( $encodings, $encoding );
mb_internal_encoding( 'ISO-8859-1' );
}
if ( $reset && $encodings ) {
$encoding = array_pop( $encodings );
mb_internal_encoding( $encoding );
}
}
История изменений
| Версия | Описание |
|---|---|
| 3.7.0 | Introduced. |

