如何在php中区分两个单词

时间:2012-08-30 03:04:50

标签: php string

我的网站有搜索引擎。我安装了像Google这样的功能“你的意思是xxx吗?”。它返回更正的字符串。那么,有没有办法让我可以比较那些不正确和正确的字符串,并加粗像Google那样纠正的字样呢?

这是我的代码:

 <?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;
        }
    }
 }
 ?>

2 个答案:

答案 0 :(得分:3)

根据以下评论,您正在寻找类似的内容:

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

对于那些对如何检测拼写错误和替代方案建议感兴趣的人,请看一下:Levenshtein Distance

答案 1 :(得分: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>';
        }
    }
}