mbstring_binary_safe_encoding

函式
mbstring_binary_safe_encoding ( $reset = false )
引數
  • (bool) $reset Optional. Whether to reset the encoding back to a previously-set encoding. Default false.
    Required:
    Default: false
相關
  • reset_mbstring_encoding()
定義位置
相關方法
reset_mbstring_encodingwp_admin_bar_my_sites_menuwp_admin_bar_site_menu
引入
3.7.0
棄用
-

mbstring_binary_safe_encoding 函式用於在 PHP 的多位元組字串函式中臨時設定字元編碼為”二進位制”: 這是必要的,因為當編碼被設定為 UTF-8 時,一些 PHP 的安裝對多位元組字串有問題。

當啟用 func_overload 時,將 mbstring 內部編碼設定為二進位制安全編碼。

當mbstring.func_overload用於多位元組編碼時,strlen()和類似函式的結果會尊重utf8字元,導致二進位制資料返回錯誤的長度。

這個函式將mbstring編碼重寫為二進位制安全編碼,並在之後通過`reset_mbstring_encoding`函式將其重置為使用者期望的編碼。

遞迴呼叫這個函式是安全的,但是每個`mbstring_binary_safe_encoding()`的呼叫都必須以相同數量的 呼叫的次數必須與”reset_mbstring_encoding()”相同。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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 );
}
}
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 ); } }
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 );
	}
}

常見問題

FAQs
檢視更多 >