preg_match_all идеально соответствует английским словам, но не повезло со словами на иврите

Я пытаюсь сопоставить запрещенные слова на иврите, полученные из таблицы базы данных mysql, со строкой на иврите в $_POST['content'], для английских слов (если они используются в строке на иврите $_POST['content']) это дает совпадение, но для слов на иврите не повезло. Не могли бы вы помочь мне изменить приведенный ниже код для поиска запрещенного слова на иврите в заданной строке? Все исходные данные проверены в формате UTF-8.

<?

$banned_words=array();
while($loc=mysql_fetch_array($loc_query))
{
    $banned_words[$k]=stripslashes(utf8_decode($loc["sb_word"]));
    $k=$k+1;
}

$matches = array();
$matchFound = preg_match_all(
    "/\b(" . implode($banned_words,"|") . ")\b/u", 
    $_POST['content'], 
    $matches
    );

if ($matchFound)
{  
    $words = array_unique($matches[0]);   
    $word_status=1;
    }
?>

person Krishnendu Majumder    schedule 05.03.2012    source источник
comment
implode работает наоборот. Сначала вам нужно указать символ клея, а затем переменную массива.   -  person mario    schedule 06.03.2012
comment
@mario implode() может по историческим причинам принимать свои параметры в любом порядке. Тем не менее, для обеспечения согласованности со взрывом () использование задокументированного порядка аргументов может быть менее запутанным.   -  person Andrew Hall    schedule 06.03.2012


Ответы (1)


\b не поддерживает Unicode, вам следует использовать свойства символов Unicode. См. этот ответ для получения помощи

person dev-null-dweller    schedule 05.03.2012