开发者

Remove every <br /> except one per line?

How can I turn this:

...<br />
<br />
...<br />
...<br />
<br />
<br />
...<br /开发者_JAVA百科>

Into this using PHP:

...<br />
...<br />
...<br />
...

Please notice the deletion of the first and last

even if it's mentioned once. In the middle we keep just one


preg_replace('#<br />(\s*<br />)+#', '<br />', $your_string);

This will replace instances of more than one <br />, optionally with whitespace separating them, with a single <br />.

Note that <br /> in the pattern matches exactly that. If you wanted to be more defensive, you could change it to <br[^>]*> which would allow for <br> tags that have attributes (ie. <br style="clear: both;" />) or that don't have the trailing slash.


First of all, you should edit your question because the first <br /> doesn't appear.

Then to replace all duplicate <br /> AND the first and the last one, you can do :

$str = <<<EOD
<br />
...<br />
<br />
...<br />
...<br />
<br />
<br />
...<br />
EOD;

$str = preg_replace('~(^<br />\s*)|((?<=<br />)\s*<br />)|(<br />\s*$)~', '', $str);
echo "===\n",$str,"\n===\n";

This will output:

===
...<br />
...<br />
...<br />
...
===
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜