删除每一个除了每行一个?

时间:2010-09-22 21:38:50

标签: php regex

我该怎么做呢:


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

使用 PHP

进入此项目
...<br />
...<br />
...<br />
...

请注意删除第一个和最后一个,即使它被提及一次。在中间我们只保留一个

2 个答案:

答案 0 :(得分:10)

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

这将使用单个<br />替换多个<br />的实例,可选地将它们分隔开来。

请注意,模式中的<br />完全匹配。如果您想要更具防御性,可以将其更改为<br[^>]*>,这将允许<br>标记具有属性(即。<br style="clear: both;" />)或没有尾随斜杠。

答案 1 :(得分:1)

首先,您应该编辑您的问题,因为第一个<br />没有出现。

然后,要替换所有重复的<br />以及第一个和最后一个,您可以执行以下操作:

$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";

这将输出:

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