我正在尝试确定我的字符串是否包含UTF-8 替换字符。
目前我有两次尝试都失败了。
第一次尝试:
stristr($string, "\xEF\xBF\xBD")
第二次尝试
preg_match("#\xEF\xBF\xBD#i", $string)
这些都不起作用。
问题是,如何检查我的字符串中的替换字符?
我正在尝试确定我的字符串是否包含UTF-8 替换字符。
目前我有两次尝试都失败了。
第一次尝试:
stristr($string, "\xEF\xBF\xBD")
第二次尝试
preg_match("#\xEF\xBF\xBD#i", $string)
这些都不起作用。
问题是,如何检查我的字符串中的替换字符?
如果您只想使用它来查看字符串中是否存在不可见字符,则可以使用以下内容:
if (strlen($string) != strlen(iconv("UTF-8", "UTF-8//IGNORE", $string)))
echo "This string has invisible characters";
您问题中的方法也应该有效,但它要求字符串的字符编码实际上是 UTF-8。在检查字符是否存在之前,您可以使用iconv
将字符串从其编码转换为 UTF-8。
另外:您可能希望对这个字符使用多字节表示法,而是使用 \uFFFD。但是,默认情况下 PHP 不支持此功能,这意味着您必须使用以下技巧:
mb_convert_encoding('က', 'UTF-8', 'HTML-ENTITIES');
更多信息在这里。
<?php
if (mb_detect_encoding($str, "UTF-8") !== FALSE) {
// $str is UTF-8 encoded
} else {
// $str is not UTF-8 encoded
}
请参考这个。