检查UTF-8替换字符

时间:2013-08-20 12:52:49

标签: php utf-8 character-encoding

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

目前,我有两次尝试失败。

首次尝试:

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

第二次尝试

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

这些都不起作用。

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

2 个答案:

答案 0 :(得分: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');

有关here的更多信息。

答案 1 :(得分:-1)

<?php
if (mb_detect_encoding($str, "UTF-8") !== FALSE) {
     // $str is UTF-8 encoded
} else {
    // $str is not UTF-8 encoded
}

请参阅this