所以我在 PHP 中寻找一种正确的方法来检测字符串是否在 BMP 范围内(基本多语言平面),但我什么也没找到。在这种特殊情况下,甚至mb-check-encoding和mb_detect_encoding也没有提供任何帮助。
所以我写了自己的代码
<?php
function is_bmp($string) {
$str_ar = mb_str_split($string);
foreach ($str_ar as $char) {
/*Check if there's any character's code point outside the BMP range*/
if (mb_ord($char) > 0xFFFF)
return false;
}
return true;
}
/*String containing non-BMP Unicode characters*/
$string = 'blah blah';
var_dump(is_bmp($string));
?>
输出:
布尔(假)
现在我的问题是:
有更好的方法吗?它有什么缺陷吗?