<a href="">中华人民共和国中华人民共和国\n</a>\n\n
或者 
<a href="">\n中华人中华人民共和国\n</a>
这样的字符串中a标签的\n我怎么用正则替换掉啊????

解决方案 »

  1.   

    既然\n是字符串,直接用str_replace('\n','',$str);替换不行吗?
      

  2.   

    或者
    $str='<a href="">中华人民共和国中华人民共和国\n</a>\n\n';
    echo preg_replace('/\\\\n/','',$str);
      

  3.   

    主要就是要处理 a 标签中的\n,别的地方的\n 不用去掉.
    <a href="">中华人民共和国中华人民共和国\n</a>\n\n
    去掉后的效果是
    <a href="">中华人民共和国中华人民共和国</a>\n\n需要用到正则,我没想好怎么写,哎.脑壳大了...
      

  4.   

    <?php
    $str = '<a href="">\n中华人中华人民共和国\n</a>';
    $patten = '#<a href="([^\"]*)"*?>(.*)</a>#';
    preg_match($patten,$str,$arr);
    $str2 = str_replace('\n','',$arr[2]);
    $new =  str_replace($arr[2],$str2,$str);
    echo $new;
      

  5.   

    $str = '<a href="">\n中华人民共和国中华人民共和国\n</a>\n\n保留!<a href="">baidu\n你好</a>保留\n保留<a href="">谷歌\n走了</a>保留\n保留';
    $patten = '#<a.+?href="(.*?)".*?>(.+?)</a>#';$result=array();
    $tmp=array();
    preg_match_all($patten,$str,$arr);for($i=0;$i<count($arr[2]);$i++){
    $tmp[$i] = str_replace('\n','',$arr[2][$i]);//清除换行
    $result[$i] = str_replace($arr[2][$i],$tmp[$i],$str);
    $str = $result[$i];//替换的内容重新赋值
    }echo str_replace('\n',"\n",$result[count($arr[2])-1]);源码:<a href="">中华人民共和国中华人民共和国</a> 
     
    保留!<a href="">baidu你好</a>保留
    保留<a href="">谷歌走了</a>保留
    保留
      

  6.   

    for修改成foreach更简洁
    foreach($arr[2] as $a){
    $tmp = str_replace('\n','',$a);
    $result = str_replace($a,$tmp,$str);
    $str = $result;
    }
    echo str_replace('\n',"\n",$result);
      

  7.   

    感谢,借用了.用零宽断言可以解决,
    也可以类似
    $rawText = preg_replace("/(<a.*?>.*?<\/a>)/sie", "str_replace('\\n',\"\",stripslashes(\"\$1\"))", $rawText);
    解决.3KS