我有一個錯誤的字詞過濾器,它使用保存在本地UTF-8編碼文件中的關鍵字列表。該文件包含拉丁字符和非拉丁字符(大部分是英文和阿拉伯文)。一切都按預期使用拉丁語關鍵字,但當變量包含非拉丁字符時,匹配似乎無法識別這些現有關鍵字。preg_match針對本地UTF-8編碼文件中的拉丁字符和非拉丁字符關鍵字列表的關鍵字變量
我該如何去匹配拉丁和非拉丁關鍵詞。
的badwords.txt文件包括每行一個字作爲在本例中用於匹配
bad
nasty
racist
سفالة
وساخة
جنس
代碼:
$badwords = file_get_contents("badwords.txt");
$badtemp = explode("\n", $badwords);
$badwords = array_unique($badtemp);
$hasBadword = 0;
$query = strtolower($query);
foreach ($badwords as $key => $val) {
if (!empty($val)) {
$val = trim($val);
$regexp = "/\b" . $val . "\b/i";
if (preg_match($regexp, $query))
$badFlag = 1;
if ($badFlag == 1) {
// Bad word detected die...
}
}
}
我讀過的iconv,多字節函數(MBSTRING),並使用操作員/你可能會對此有所幫助,我嘗試了一些東西,但似乎沒有把它做好。任何幫助,將不勝感激解決這個問題,並讓它匹配拉丁和非拉丁關鍵字。
謝謝Jukka,這正是我所需要的,它終於有效。我不會認爲這個問題會成爲事實。在我測試各種建議時,邊界正則表達式實際上始終保持不變。非常感謝。 – Yallaa 2011-12-26 22:29:12