seems_utf8

函式
seems_utf8 ( $str )
引數
  • (string) $str The string to be checked
    Required:
返回值
  • (bool) True if $str fits a UTF-8 model, false otherwise.
定義位置
相關方法
kses_initscreen_layout_search_terms_tidy
引入
1.2.1
棄用
-

seems_utf8:這是一個WordPress的函式,用來檢查一個給定的字串是否是UTF-8編碼的。它通常用於確保字串是以正確的格式編碼的,以達到國際化的目的: 這個函式有一個引數,就是要檢查的字串。

檢查一個字串是否為UTF8編碼。

注意: 這個函式檢查5位元組的序列,UTF8有最大長度為4的位元組序列。

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
function seems_utf8( $str ) {
mbstring_binary_safe_encoding();
$length = strlen( $str );
reset_mbstring_encoding();
for ( $i = 0; $i < $length; $i++ ) {
$c = ord( $str[ $i ] );
if ( $c < 0x80 ) {
$n = 0; // 0bbbbbbb
} elseif ( ( $c & 0xE0 ) == 0xC0 ) {
$n = 1; // 110bbbbb
} elseif ( ( $c & 0xF0 ) == 0xE0 ) {
$n = 2; // 1110bbbb
} elseif ( ( $c & 0xF8 ) == 0xF0 ) {
$n = 3; // 11110bbb
} elseif ( ( $c & 0xFC ) == 0xF8 ) {
$n = 4; // 111110bb
} elseif ( ( $c & 0xFE ) == 0xFC ) {
$n = 5; // 1111110b
} else {
return false; // Does not match any model.
}
for ( $j = 0; $j < $n; $j++ ) { // n bytes matching 10bbbbbb follow ?
if ( ( ++$i == $length ) || ( ( ord( $str[ $i ] ) & 0xC0 ) != 0x80 ) ) {
return false;
}
}
}
return true;
}
function seems_utf8( $str ) { mbstring_binary_safe_encoding(); $length = strlen( $str ); reset_mbstring_encoding(); for ( $i = 0; $i < $length; $i++ ) { $c = ord( $str[ $i ] ); if ( $c < 0x80 ) { $n = 0; // 0bbbbbbb } elseif ( ( $c & 0xE0 ) == 0xC0 ) { $n = 1; // 110bbbbb } elseif ( ( $c & 0xF0 ) == 0xE0 ) { $n = 2; // 1110bbbb } elseif ( ( $c & 0xF8 ) == 0xF0 ) { $n = 3; // 11110bbb } elseif ( ( $c & 0xFC ) == 0xF8 ) { $n = 4; // 111110bb } elseif ( ( $c & 0xFE ) == 0xFC ) { $n = 5; // 1111110b } else { return false; // Does not match any model. } for ( $j = 0; $j < $n; $j++ ) { // n bytes matching 10bbbbbb follow ? if ( ( ++$i == $length ) || ( ( ord( $str[ $i ] ) & 0xC0 ) != 0x80 ) ) { return false; } } } return true; }
function seems_utf8( $str ) {
	mbstring_binary_safe_encoding();
	$length = strlen( $str );
	reset_mbstring_encoding();
	for ( $i = 0; $i < $length; $i++ ) {
		$c = ord( $str[ $i ] );
		if ( $c < 0x80 ) {
			$n = 0; // 0bbbbbbb
		} elseif ( ( $c & 0xE0 ) == 0xC0 ) {
			$n = 1; // 110bbbbb
		} elseif ( ( $c & 0xF0 ) == 0xE0 ) {
			$n = 2; // 1110bbbb
		} elseif ( ( $c & 0xF8 ) == 0xF0 ) {
			$n = 3; // 11110bbb
		} elseif ( ( $c & 0xFC ) == 0xF8 ) {
			$n = 4; // 111110bb
		} elseif ( ( $c & 0xFE ) == 0xFC ) {
			$n = 5; // 1111110b
		} else {
			return false; // Does not match any model.
		}
		for ( $j = 0; $j < $n; $j++ ) { // n bytes matching 10bbbbbb follow ?
			if ( ( ++$i == $length ) || ( ( ord( $str[ $i ] ) & 0xC0 ) != 0x80 ) ) {
				return false;
			}
		}
	}
	return true;
}

常見問題

FAQs
檢視更多 >