如何检测非西方字符?

我想禁止某些UTF-8输入(服务器端),例如东方语言,其中示例输入可能是“ 伊”。

但是,我确实想继续支持其他拉丁语或“类似拉丁语”的字符,例如威尔士语ŵ和ŷ,因此无法检查latin-1

我有哪些选择?(如果特定于语言,则首选 PHP)

非常感谢。


推理:浏览器对许多非西方字符的支持经常缺失(例如,在另一个浏览器上,我只是在上面的问题中看到一个框),所以对于像显示名称这样的东西,有时限制它是合适的,即使它不适合消息正文。


答案 1

就这么做

preg_match('/[^\\p{Common}\\p{Latin}]/u', $string)

其中 是 UTF-8 字符串。如果存在非拉丁字符,这将返回“1”,否则将返回“0”。$string

例:

var_dump(preg_match('/[^\\p{Common}\\p{Latin}]/u', 'sf..ŷaás??'));  //int(0)
var_dump(preg_match('/[^\\p{Common}\\p{Latin}]/u', 'sf..ŷݤaás??')); //int(1)

答案 2

推荐