【问题标题】:preg_match_all matches English words perfectly but no luck with Hebrew wordspreg_match_all 与英语单词完美匹配,但与希伯来语单词不匹配
【发布时间】:2012-03-23 07:35:46
【问题描述】:

我正在尝试将从 mysql db 表中检索到的希伯来语禁用词与 $_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;
    }
?>

【问题讨论】:

  • implode 正好相反。您需要先给出胶水字符,然后是数组变量。
  • @mario implode() 由于历史原因,可以按任意顺序接受其参数。但是,为了与explode() 保持一致,使用记录在案的参数顺序可能不会造成混淆。

标签: php mysql hebrew


【解决方案1】:

\b 不支持 unicode,您应该使用 Unicode character properties。请参阅this answer 获取帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-28
    • 1970-01-01
    • 1970-01-01
    • 2021-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-09
    相关资源
    最近更新 更多