0

我的网站有一个搜索引擎。我已经安装了一个功能,比如谷歌的“你的意思是 xxx 吗?”。它返回更正后的字符串。那么,有没有办法让我可以比较那些不正确和正确的字符串,并像谷歌那样将更正的单词加粗?

这是我的代码:

 <?php
 function suggestion($word){
    $first_word=substr($word,0,1);
    $first_word=strtoupper($first_word);
    $query="SELECT * FROM words WHERE UPPER(LEFT(name,1))='$first_word'";
    $db_words=mysql_query($query);
    $flag=true;
    while($row_words=mysql_fetch_array($db_words)){
        similar_text($row_words['name'],$word,$percent);
        if(($percent>50)&&($percent!=100)){
            echo '<strong>Did you mean:</strong><br>';
            echo $row_words['name'],'<br>';
            $flag=false;
        }
    }
 }
 ?>
4

2 回答 2

3

根据下面的评论,您正在寻找这样的东西:

function corrected($bad, $good, $wholephrase) {
    return preg_replace('#\b'. preg_quote($bad) . '\b#g', '<em>' . htmlspecialchars($good) . '</em>', $wholephrase);
}

对于那些对如何完成拼写错误检测和替代建议感兴趣的人,请看这里:Levenshtein Distance

于 2012-08-30T03:07:48.400 回答
0

没人帮我!!;-(

这是我创建的代码:

function suggestion($word){
    $first_word=substr($word,0,1);
    $first_word=strtoupper($first_word);
    $query="SELECT * FROM words WHERE UPPER(LEFT(name,1))='$first_word'";
    $db_words=mysql_query($query);
    $wd=explode(" ",$word);
    while($row_words=mysql_fetch_array($db_words)){
        similar_text($row_words['name'],$word,$percent);
        if(($percent>50)&&($percent!=100)){
            $rw=explode(" ",$row_words['name']);
            $d=array_udiff($rw,$wd,'strcasecmp');
            for($i=0;$i<count($rw);$i++){
                if(in_array($rw[$i],$d)){
                    $rw[$i]="<em>".$rw[$i]."</em>";
                }
            }
            echo '<strong>Did you mean:</strong><br>';
            foreach($rw as $r){
                echo $r," ";
            }
            echo '<br>';
        }
    }
}
于 2012-08-30T05:06:13.790 回答