楼主代码有问题。应该写成这样。
表达式必须被括起来。可以使用#也可以用/也可以用别的ascii字符。被使用作为定界符的ascii字符如果在表达式中出现,那么,必须用\转义。建议多看看正则表达式的相关介绍
echo ereg_replace('#;#i',';','保护');

解决方案 »

  1.   

    to:gu1dai
    很高兴得到您的指点.谢谢.
    echo ereg_replace('#;#i',';','保护');
    //好像不行,
    中文的;号应该不算定符.
    上面的表达式无法替换分号(;),
    echo ereg_replace('#;#i',';','保护;人');//结果为:保护;人
      

  2.   

    楼主的做法存在严重问题!经preg_match_all("/[\\x80-\\xff]?./",$subject,$arr);后
    $arr[0]的每一个元素要么是一个宽字符,要么是一个基本ascii字符
    所以后继的if(ereg($pattern_ary,$val))已经失去意义了,当然对于楼主的特例——规则串只是一个汉字而言还是有效的
      

  3.   

    诸位说得对,经诸位指点,才发现这个函数不能替换多于一字的ereg.
    不过,我原本也是用来解决单汉字替换的,若有两汉字以上极极少ereg_replace会出现问题.
    是这样吗?
    谢谢诸位!