在PHP中检测表单上的俄语字符

Spa*_*Dog 15 php

我有一个网站,人们可以提交有关iPhone应用程序的网站链接.该人提交了应用程序名称,描述,类别和URL.这个网站有多年没有收到俄罗斯开发商的任何建设性提交,但不幸的是,俄罗斯垃圾邮件发送者发现它让我感到厌恶.即使采取所有针对垃圾邮件的措施,如标题框等,一些人仍坚持发送与iPhone无关的色情俄语内容.

我想完全禁止使用俄语字符完成的任何URL或帖子.对于URL我没什么可做的,除了检查URL是否包含".ru".但是为了描述,我想检测俄罗斯人物.我如何在PHP中执行此操作?

谢谢.

Ale*_*nov 56

Даоченьпросто使用UTF-8正则表达式很容易(假设您的站点使用UTF-8编码):

function isRussian($text) {
    return preg_match('/[?-??-???]/u', $text);
}
Run Code Online (Sandbox Code Playgroud)

  • @Mike,差不多,我说俄语但不是来自俄罗斯:) (2认同)
  • 谢谢。我还发现执行 preg_match_all 并计算俄语字符的数量并使用它来获取百分比很有用。有点准贝叶斯。 (2认同)

Jul*_*ent 8

根据PHP文档,从版本5.1.0开始,可以使用\ p {语言代码}在utf-8 PCRE正则表达式中查找特定(写入)脚本.对于Rusian来说

preg_match( '/[\p{Cyrillic}]/u', $text); 
Run Code Online (Sandbox Code Playgroud)

页面上有警告:

通过Unicode属性匹配字符并不快,因为PCRE必须搜索包含超过一万五千个字符的数据的结构.