mbstring_binary_safe_encoding( bool $reset = false )
Set the mbstring internal encoding to a binary safe encoding when func_overload is enabled.
Description
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.
See also
Parameters
- $reset
-
(Optional) Whether to reset the encoding back to a previously-set encoding.
Default value: false
Source
File: wp-includes/functions.php
function mbstring_binary_safe_encoding( $reset = false ) {
static $encodings = array();
static $overloaded = null;
if ( is_null( $overloaded ) )
$overloaded = function_exists( 'mb_internal_encoding' ) && ( ini_get( 'mbstring.func_overload' ) & 2 );
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 );
}
}
Changelog
Version | Description |
---|---|
WP-3.7.0 | Introduced. |