$p = array(
"#(?:<br />){3}#",
"#<br />#",
"#_STACK_#",
);
$r = array(
"_STACK_",
"哈哈",
"<br /><br /><br />",
);
echo preg_replace($p, $r, "12<br />34<br /><br /><br />56"); 

解决方案 »

  1.   

    还有点问题~
    在字符串里,<br/>出现的次数可能会不固定,可能是...<br/><br/>...,也可能是...<br/><br/><br/><br/>....,也可能是...<br/><br/><br/><br/><br/><br/>...
    我希望在只替换出现一次<br/>的,而出现多次的<br/>不处理,应该怎么改呢?
    谢谢!
      

  2.   

    “后面的连续出现三次的<br/>不变”这是你最初的要求!
    "#(?:<br />){3}#",
    ===》
    "#(?:<br />){3,}#",
      

  3.   

    抱歉,是我没有说清楚我当时是想举例说连续出现三次<br/>不变(连续出现两次以上<br/>我也都希望不变)一个字符串,其中连续出现<br/>的次数会不固定,我想替换只出现一次<br/>的,而出现多次的<br/>不处理。这是我碰到的一个实际应用:一篇文章,我在存到数据库前做了处理,将换行替换为了<br/>,段落之间有用一个<br/>分隔的,也有用多个<br/>分隔的, 由于一个<br/>分隔的,感觉排版效果不好,要再增加一个<br/>,达到段落之间,最少会有一个空行,这样看起来效果会好一些,当然已经有了空行的,我就不想再增加空行了。