我需要定义一个pcre regexp,以便在drupal spam module中使用阿拉伯语/波斯语字母表中的某些垃圾单词。问题是,通常的pcre regexp显然无法在阿拉伯字母中找到模式。
例如,while/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"

它也运行得很好。确保将文件(和转换输入数据)保存在(到)utf-8中。

10-08 20:16