0

我正在尝试确定我的字符串是否包含UTF-8 替换字符

目前我有两次尝试都失败了。

第一次尝试:

stristr($string, "\xEF\xBF\xBD")

第二次尝试

preg_match("#\xEF\xBF\xBD#i", $string)

这些都不起作用。

问题是,如何检查我的字符串中的替换字符?

4

2 回答 2

0

如果您只想使用它来查看字符串中是否存在不可见字符,则可以使用以下内容:

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');

更多信息在这里

于 2013-08-20T13:08:56.300 回答
-1
<?php
if (mb_detect_encoding($str, "UTF-8") !== FALSE) {
     // $str is UTF-8 encoded
} else {
    // $str is not UTF-8 encoded
}

请参考这个

于 2013-08-20T13:14:48.573 回答