本帖最后由 pantera_650 于 2010-11-01 10:49:55 编辑

解决方案 »

  1.   

    将&#123或&xab12或&add类似字符串里面的&替换为&
    讲起来好麻烦,你知道是这个意思就好了
      

  2.   

    1.表示匹配以$amp;开头,后跟以下3种组合
        #后跟3-5个十进制数字
        #x后跟4个16进制数字
        1个字母后跟2-5个小写字母或数字
    2.preg_replace是循环的,直到没有可以匹配的字符串为止,后面替换为'$\\1'中的\\1是表示第一个括号匹配到的串,在这里也就是匹配到的串中$amp;后面的内容,也就是说把$amp;替换为$
        
      

  3.   

    & 是 & 的 html 编码表示((#(\d{3,5}|x[a-fA-F0-9]{4})|[a-zA-Z][a-z0-9]{2,5});)
    以如下规则匹配
    #(\d{3,5};  形如 #123; 的串
    #x[a-fA-F0-9]{4}); 形如 #80Af; 的串
    [a-zA-Z][a-z0-9]{2,5}; 形如 #Sa2; 的串\\1 表示第一个括号中的匹配内容,而不是第一次匹配的内容
    多次匹配到就多次替换
      

  4.   

    恩,我发现我把&都写成$了。。
    残念。。
    $str='
    1.表示匹配以$amp;开头,后跟以下3种组合
      #后跟3-5个十进制数字
      #x后跟4个16进制数字
      1个字母后跟2-5个小写字母或数字
    2.preg_replace是循环的,直到没有可以匹配的字符串为止,后面替换为\'$\\\\1\'中的\\\\1是表示第一个括号匹配到的串,在这里也就是匹配到的串中$amp;后面的内容,也就是说把$amp;替换为$
    ';
    echo str_replace('$','&',$str);