php mysql搜索脚本,如何使匹配结果加粗
下面我有一个脚本,可以读取我网页上mysql数据库中显示的信息,我如何将匹配结果加粗?例如,如果我搜索“john”,如何生成显示的结果“johnbloggs”。谢谢 这是到目前为止的剧本php mysql搜索脚本,如何使匹配结果加粗,php,mysql,database,bold,Php,Mysql,Database,Bold,下面我有一个脚本,可以读取我网页上mysql数据库中显示的信息,我如何将匹配结果加粗?例如,如果我搜索“john”,如何生成显示的结果“johnbloggs”。谢谢 这是到目前为止的剧本 <? mysql_connect ("localhost", "user","pass") or die (mysql_error()); mysql_select_db ("databasename"); $term = $_POST['term']; $sql = mysql_query("se
<?
mysql_connect ("localhost", "user","pass") or die (mysql_error());
mysql_select_db ("databasename");
$term = $_POST['term'];
$sql = mysql_query("select * from tablename where category like '%$term%' or title like '%$term%' or postcode like '%$term%' or info like '%$term%' ");
while ($row = mysql_fetch_array($sql)){
echo '<br/> Category: '.$row['category'];
echo '<br/> Title: '.$row['title'];
echo '<br/> Address: '.$row['add1'];
echo '<br/> Street: '.$row['street'];
echo '<br/> City: '.$row['city'];
echo '<br/> Postcode: '.$row['postcode'];
echo '<br/> Phone: '.$row['phone'];
echo '<br/> E-Mail: '.$row['email'];
echo '<br/> Website: '.$row['website'];
echo '<br/><br/>';
}
?>
例如,假设您有一个数组
$results
,其中包含来自MySQL查询的一些结果
假设您在name
字段中搜索
您可以使用非常简单的str\u replace
来实现这一点:
foreach($results as $result)
echo str_replace($search,'<b>'.$search.'</b>',$result['name']);
顺便提一下(重要)
你在这里做什么:
$term = $_POST['term'];
$sql = mysql_query("select * from tablename where category like '%$term%' or title like '%$term%' or postcode like '%$term%' or info like '%$term%' ");
这是非常危险的$\u POST['term']
来自用户,如果该用户填写,该怎么办;删除表tablename--
?您的查询将突然更改为删除整个表并删除所有信息的内容
您应该始终检查用户输入,下面是一个很好的教程,介绍了一些方法:
功能突出显示($term,$result){
返回str_replace($term,“”.$term.”,$result);
}
然后对每个要突出显示的字段执行此操作
while ($row = mysql_fetch_array($sql)){
echo '<br/> Category: '.highlight($term, $row['category']);
echo '<br/> Title: '.highlight($term, $row['title']);
echo '<br/> Address: '.$row['add1'];
echo '<br/> Street: '.$row['street'];
echo '<br/> City: '.$row['city'];
echo '<br/> Postcode: '.highlight($term, $row['postcode']);
echo '<br/> Phone: '.$row['phone'];
echo '<br/> E-Mail: '.$row['email'];
echo '<br/> Website: '.$row['website'];
echo '<br/><br/>';
}
while($row=mysql\u fetch\u数组($sql)){
回显“
类别:”。突出显示($term,$row['Category']);
回显“
标题:”。突出显示($term,$row['Title');
回显“
地址:”.$row['add1'];
回音“
街道:”.$row[“街道];
回声'
城市:'.$row['City'];
回显“
邮政编码:”。突出显示($term,$row['Postcode');
echo'
电话:'.$row['Phone'];
回显“
电子邮件:”.$row['email'];
echo'
网站:'.$row['Website'];
回音“
”;
}
您还可以一次在所有字段中突出显示它。前
while ($row = array_map(function($res) use ($search){
str_replace($search,'<b>'.$search.'</b>',$res);
},mysql_fetch_array($sql))){
//your print
}
while($row=array\u映射(函数($res)使用($search){
str_替换($search、.$search.'、$res);
},mysql_fetch_数组($sql))){
//你的指纹
}
它需要PHP5.3+,但可能会被重写为5.2-感谢promt的回复,但我正在努力实现这一点。我是php新手,不确定我的搜索字符串是什么。我试图让用户输入匹配的结果返回粗体。提前感谢。在您的示例中,这将是
$\u POST['term']
或$term
。再次感谢,最后一件事,在我的代码中,我将在哪里插入这段代码?感谢foreach($results as$result)echo str_替换($term、.$term.'、$result['title');这只是一个例子,你应该能够根据自己的代码调整它,但我会更新我的答案。太棒了!现在,如果结果完全匹配,它将使结果更加醒目。是否有一种方法可以编辑代码以使不完全匹配的匹配变为粗体?例如如果有人打圣约翰救护车。搜索的是约翰。它会被突出显示吗?谢谢。谢谢richard,我的代码里有什么我可以插入你的代码吗,谢谢advance@John我已经更新了我的答案,向您展示了它的工作原理。这基本上与Kokos的答案相同,但是调用函数而不是重复代码(通常是个好主意)。您绝对应该注意他关于SQL注入的警告。
while ($row = mysql_fetch_array($sql)){
echo '<br/> Category: '.highlight($term, $row['category']);
echo '<br/> Title: '.highlight($term, $row['title']);
echo '<br/> Address: '.$row['add1'];
echo '<br/> Street: '.$row['street'];
echo '<br/> City: '.$row['city'];
echo '<br/> Postcode: '.highlight($term, $row['postcode']);
echo '<br/> Phone: '.$row['phone'];
echo '<br/> E-Mail: '.$row['email'];
echo '<br/> Website: '.$row['website'];
echo '<br/><br/>';
}
while ($row = array_map(function($res) use ($search){
str_replace($search,'<b>'.$search.'</b>',$res);
},mysql_fetch_array($sql))){
//your print
}