如何在php中获取两个单词之间的差异


How to get difference between two words in php

我的网站有一个搜索引擎。我安装了一个类似谷歌的"你是说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;
        }
    }
 }
 ?>

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

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

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

没有人帮我-(

这是我创建的代码:

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