我需要为要在drupal spam module中使用的阿拉伯语/波斯语字母中的某些垃圾邮件单词定义PCRE正则表达式.问题是通常的PCRE正则表达式显然无法找到阿拉伯字母中的模式.
例如,虽然/ bad word /标记了“ bad word”的实例,但是
/کلمه بد/i
无法标记“کلمهبد”
感谢您为解决此问题所提供的帮助.
解决方法:
如果使用u(Unicode)PCRE修饰符,我对此没有任何问题:
$string = 'کلمه بد';
if (preg_match('~\p{Arabic}~u', $string) > 0)
{
var_dump('contains Arabic characters');
if (preg_match('~کلمه بد~ui', $string) > 0)
{
var_dump('contains spam-ish Arabic characters');
}
}
string(26) "contains Arabic characters"
string(35) "contains spam-ish Arabic characters"
它也可以很好地运行on IDEOne.com.确保将文件保存(并转换输入数据)为UTF-8.