我的网站有搜索引擎。我安装了像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;
}
}
}
?>
答案 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>';
}
}
}