PHP Regex:搜索英文和阿拉伯文文章

时间:2011-04-27 07:53:27

标签: php regex search arabic

Code sample

我正在搜索有关英语和阿拉伯语的关键字的文章。 这些文章可以是英文或阿拉伯文。

我目前的代码是:

$k = implode("|", $keywords);
$regexp = "/(?i)\b(".$k.")\b/";
preg_match_all( $regexp, $content, $matches );

但由于某种原因,这并没有在阿拉伯文章中找到关键字。我已经确认关键字和文章都正确阅读;没有编码问题。

我该怎么做才能解决这个问题?请注意,我无法检测文章或关键字是英文还是阿拉伯文,因此必须有一个正则表达式来匹配它们。

1 个答案:

答案 0 :(得分:1)

你的正则表达式可能只是缺少/u nicode标志:

$regexp = "/(?i)\b(".$k.")\b/u";

否则PCRE必须比较字节。在这种情况下,它仍然可以找到单词(当UTF-8编码相同时),但不会检测单词\b oundaries。

<强>更新
好的\b实际上只检测\w边界(因此取决于区域设置而不是/ u标志)。然后尝试这个,它使用断言:

$regexp = "/(?<!\p{L})(".$k.")(?!\p{L})/ui";