文档里有多个连续出现的<br />
<br />之间可能有空格回车换行tab键也可能有&nbsp字符,我希望替换后超过两个连续的<br />的替换成两个<br />比如$str1="<br />   <br /> <br />&nbsp&nbsp&nbsp<br /><br /><br />&nbsp&nbsp<br />"
比如$str1="<br /><br /><br />                       <br /><br /><br />&nbsp&nbsp&nbsp&nbsp<br />"替换后要求返还 “<br /><br />”

解决方案 »

  1.   

    $s="<br /> <br /> <br />
    &nbsp;&nbsp;&nbsp;<br /><br /><br />&nbsp;&nbsp;<br />";echo preg_replace('/(<br\s\/>(\s|&nbsp;)*){2,}/i','<br /><br />',$s);------------------------
    &nbsp不是空格,&nbsp;才是
    所以这里没有考虑前者,而是考虑后者
    如果确实是前者,请自行改动上面的代码
      

  2.   

    $search = array (
    "'&(amp|#38);'i", 
    "'&(nbsp|#160)'i", 
    "/\\n/",
    "/[(<br \/>)|(<br \/><br \/>)]{2,}/",
    "/\\r/",
    "/\\t/",
    "/<br \/>\s/",
    "'&#9'i"
    ); 
    $replace = array (
    "", 
    "", 
    "chr(\1)",
    "<br \/><br \/>",
    "",
    "",
    "",
    ""
    );
    $content ='<br /> <br /> <br />&nbsp&nbsp&nbsp<br /><br /><br />&nbsp&nbsp<br />';
    $content =preg_replace($search,$replace,$content);
    echo "内容:".$content;
    这个刚试过,可以的
      

  3.   


    你这个处理也太复杂了吧另外别的地方的&nbsp;需要保留怎么办
      

  4.   

    这算复杂吗?只不过用了一个方法,另外别的地方的&nbsp要保留的话,直接改$search就可以了