如何检测字符串中的非 ASCII 字符?
如果我有一个PHP字符串,我如何以有效的方式确定它是否包含至少一个非ASCII字符?通过非ASCII字符,我的意思是任何不属于此表的字符,http://www.asciitable.com/,位置32 - 126(包括32 - 126)。
因此,它不仅必须是ASCII表的一部分,而且还必须是可打印的。我想检测一个字符串,其中包含至少一个不符合这些规范的字符(不可打印的ASCII,或者完全不同的字符,例如不属于该表的Unicode字符)。
如果我有一个PHP字符串,我如何以有效的方式确定它是否包含至少一个非ASCII字符?通过非ASCII字符,我的意思是任何不属于此表的字符,http://www.asciitable.com/,位置32 - 126(包括32 - 126)。
因此,它不仅必须是ASCII表的一部分,而且还必须是可打印的。我想检测一个字符串,其中包含至少一个不符合这些规范的字符(不可打印的ASCII,或者完全不同的字符,例如不属于该表的Unicode字符)。
我发现检测是否有任何字符从列表中掉落更有用
if(preg_match('/[^\x20-\x7e]/', $string))
您可以使用mb_detect_encoding
并检查 ASCII:
mb_detect_encoding($str, 'ASCII', true)
如果包含至少一个非 ASCI 字符(字节值 > 0x7F),则返回 false。$str