$str="<a href='xxx' title='一二三四五'>一二三四五</a><img src='xxx' alt='一二三四五'>...";
现在我只想替换上面的字符串中的页面显示的字符“三四”替换为“叁肆”,而超文本标签内的字符不动,替换结果如下:
$str="<a href='xxx' title='一二三四五'>一二叁肆五</a><img src='xxx' alt='一二三四五'>...";
请问怎么写这个语句?谢谢

解决方案 »

  1.   

    $str="<a href='xxx' title='一二三四五'>一二三四五</a><img src='xxx' alt='一二三四五'>...";
    echo preg_replace("/(>[^']*?)(三四)/",'\1叁肆',$str);
      

  2.   


    $str="<a href='xxx' title='一二三四五'>一二三四五</a><img src='xxx' alt='一二三四五'>...";
    $str=preg_replace('/(>.*)(三四)(.*<)/','$1叁肆$3',$str);
    通配,通杀...
      

  3.   


    谢谢,我试了一下,的确成功,不过有个问题,您写的这代码如果遇到字符串多次出现或出现\n好象就有问题了,能改改吗?
    比如:$str="<a href='xxx' title='一二三四五'>一二三四五一二三四五一二三四五一二三四五\n</a><img src='xxx' alt='一二三四五'>...";
      

  4.   

    好吧,不想那么多了,2B一点$str="<a href='xxx' title='一二三四五'>一二三四五一二三四五一二三四五一二三四五一二三四五</a><img src='xxx' alt='一二三四五'>...";
    //$str="<a href='xxx' title='一二三四五'>一二三四五</a><img src='xxx' alt='一二三四五'>...";
    preg_match('/>(.*)<\/a>/',$str,$match);$newStr=str_replace('三四','叁肆',$match[1]);
    $str=preg_replace('/(<.*>).*(<\/.*>.*)/','$1'.$newStr.'$2',$str);
    echo $str;
      

  5.   

    $str="<a href='xxx' title='一二三四五'>一二三四五一二三四五一二三四五一二三四五\n</a><img src='xxx' alt='一二三四五'>...";
    echo preg_replace('/三四(?![^<]+>)/','叁肆', $str);