$body = "新碶镇";
$body = preg_replace("/碶\\/","&7&",$body);
echo $body;

解决方案 »

  1.   

    我没用正则,下面这代码虽然能解决你暂时问题,但好象不治本啊<?
    $body = "新碶镇";
    for($Tmpa=0;$Tmpa<strlen($body);$Tmpa++){
    if(strcmp($body[$Tmpa].$body[$Tmpa+1],chr(180).chr(92))==0){
    $insert="&7&";
    $msg.=$insert;
    $Tmpa++;
    }else{
    $msg.=$body[$Tmpa];
    }
    }
    echo $body."->".$msg;
    ?>
      

  2.   

    if(strcmp($body[$Tmpa].$body[$Tmpa+1],chr(180).chr(92))==0){
    $insert="&7&";
    $msg.=$insert;
    $Tmpa++;
    }else{
    这里也许需要修改为唠叨问的那样,到底还有多少这样的字啊!  找到这些字,用switch语句 后面的chr()要靠自己找出来了...
      

  3.   

    我知道了在gbk字符集中一共有118个这样的字符
    他们的第二个字节的ascii码为92 十六进制 5C
    就是字符“\”,而“\”是作为转义符的,所以出此麻烦
      

  4.   

    所以通用的做法应该是入库前
    $body = eregi_replace("([\x80-\xff])[\x5c]","\\1&7&",$body);出库后
    $body = eregi_replace("([\x80-\xff])&7&","\\1\\",$body);
      

  5.   

    强,唠叨,你正则我是赶不上拉,看着头疼
    问题OVER了,结贴 扯户
      

  6.   

    不是直接用replace就可以了吗/??现在以没有PHP环境没法试