我正在尝试确定我的字符串是否包含UTF-8 replacement character。
目前,我有两次尝试失败。
首次尝试:
stristr($string, "\xEF\xBF\xBD")
第二次尝试
preg_match("#\xEF\xBF\xBD#i", $string)
这些都不起作用。
问题是,如何检查我的字符串中的替换字符?
答案 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。