自己做了一个多关键字搜索, 
但发现一旦增加了“加亮和加颜色的效果”的效果时,就会出现乱码。(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> 

解决方案 »

  1.   


    我是用GBK的吖,但还是不行。
      

  2.   

    这样试一下呢 
             $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]);
      

  3.   

    我不明白这几句是什么意思啊       $lColor = "JiAhAiDOng"; 
    $rColor = "gnODiAhAiJ"; $r[subject] = str_replace($k[0],"$lColor".$k[0]."$rColor",$r[subject]); 
      

  4.   

    mysql_query("SET NAMES GBK"); 一下
      

  5.   

    所有关于字符编码的东西都转成GBK在试一下