自己做了一个多关键字搜索,
但发现一旦增加了“加亮和加颜色的效果”的效果时,就会出现乱码。(PHP代码部分,红色部分)
但不增加这个功能,搜索是正常的。
不知道里面有什么错误。
麻烦各位帮忙看一下。谢谢 这是php代码 <?php
include('mysql_class.php'); $db=new mysql('localhost','root','root','test','GBK'); if($_GET[key]){//有值的时候进行搜索
$k=explode(" ",$_GET[key]);
//以空格作为分隔点对$_GET[key]进行分隔
echo $sql="SELECT * FROM `bbs` WHERE SUBJECT LIKE '%$k[0]%' or SUBJECT LIKE '%$k[1]%'";
//or或者;and和
$q=$db->query($sql);
while($r=$db->fetch_array($q)){
//增加加亮和加颜色的效果
$r[subject]=preg_replace("/($k[0])/i","<font color=red><b>\\1</b></font>",$r[subject]);
$r[subject]=preg_replace("/($k[1])/i","<font color=red><b>\\1</b></font>",$r[subject]);
echo $r[subject]."<br>";
}
}
?> <form action="" method="get">
关键字:
<input type="test" name="key" />
<input type="submit" value="全站搜索" name="sub"/>
</form>
但发现一旦增加了“加亮和加颜色的效果”的效果时,就会出现乱码。(PHP代码部分,红色部分)
但不增加这个功能,搜索是正常的。
不知道里面有什么错误。
麻烦各位帮忙看一下。谢谢 这是php代码 <?php
include('mysql_class.php'); $db=new mysql('localhost','root','root','test','GBK'); if($_GET[key]){//有值的时候进行搜索
$k=explode(" ",$_GET[key]);
//以空格作为分隔点对$_GET[key]进行分隔
echo $sql="SELECT * FROM `bbs` WHERE SUBJECT LIKE '%$k[0]%' or SUBJECT LIKE '%$k[1]%'";
//or或者;and和
$q=$db->query($sql);
while($r=$db->fetch_array($q)){
//增加加亮和加颜色的效果
$r[subject]=preg_replace("/($k[0])/i","<font color=red><b>\\1</b></font>",$r[subject]);
$r[subject]=preg_replace("/($k[1])/i","<font color=red><b>\\1</b></font>",$r[subject]);
echo $r[subject]."<br>";
}
}
?> <form action="" method="get">
关键字:
<input type="test" name="key" />
<input type="submit" value="全站搜索" name="sub"/>
</form>
我是用GBK的吖,但还是不行。
$lColor = "JiAhAiDOng";
$rColor = "gnODiAhAiJ"; $r[subject] = str_replace($k[0],"$lColor".$k[0]."$rColor",$r[subject]);
$r[subject] = str_replace("$lColor","<font color=\"#FF0000\">",$r[subject]);
$r[subject] = str_replace("$rColor","</font>",$r[subject]);
$rColor = "gnODiAhAiJ"; $r[subject] = str_replace($k[0],"$lColor".$k[0]."$rColor",$r[subject]);