搜索关键字标红,我用的是替换的方法,可是字母大小写会替换成我输入的格式,如何保留原格式?
请高手指教

解决方案 »

  1.   

    我用的是
    str_ireplace($new,"<font color=red>".$new."</font>", $str)
      

  2.   

    preg_replace("/".$new."/i",'<font color=red>\0</font>',$str)不过要注意对$new适当处理
      

  3.   


    preg_replace("/($new)/i","<font color='red'>\$1</font>",$str);
      

  4.   

    4楼的方法可以,先谢谢!
    不明白“\$1”是什么意思,能否指教一下。
    另,执行的结果,$str字符串最后会增加"0",是什么原因啊?
      

  5.   

    \$1表示用第一个子模式中的字符替换。
    执行的结果,$str字符串最后会增加"0",
      在我这里没有这样的情况,你再检查一下是不是$str中本来就有0。
      

  6.   

    发现执行后,$str字符串最后增加的数字不一定是"0",也出现过两位数的,不明其意,望指教,谢谢啦!
      

  7.   

      $find   =   "csdn" ;  
      $str    =   "aaCsDnaaaaaaCsdnaaaaaacsDnaaaaaaCsDnaaaaaaCsDnaaaabbbccc中国aaCsDnaaaaaaCsdnaaaaaacsDnaaaaaaCsDnaaaaaaCsDnaaaabbbccc中国aaCsDnaaaaaaCsdnaaaaaacsDnaaaaaaCsDnaaaaaaCsDnaaaabbbccc"  ; 
      echo preg_replace("/($find)/i","<font color='red'>\${1}</font>",$str);上面是我用来测试的例子,将\$1改成\${1},发现可以了。
    但是实在是不明就里,楼上的能否帮我弄明白一下。
      

  8.   

    不用\${1}直接\$1也可以啊!用\${1}的情况是当你后面还要添加数字的时候加的,避免引起混淆。
    比如:
    \${1}1,不加{}的话php解释器会以为是用子模式11替换,这样写就是用子模式1替换,并且在后面添加一个1。
      

  9.   

    不用\${1}直接\$1也可以啊!
    我又试了一下,确实是这样,可能我刚刚的$str包含了什么东西吧。楼上的真是太谢谢啦,一行语句就解决了困扰了我好几天的问题。