Php 删除每个<;br/>;除了一行?

Php 删除每个<;br/>;除了一行?,php,regex,Php,Regex,我怎样才能扭转这种局面: ...<br /> <br /> ...<br /> ...<br /> <br /> <br /> ...<br /> … … … … 使用PHP: ...<br /> ...<br /> ...<br /> ... … … … ... 请注意删除第一个和最后一个,即使只提到过一次。在中间,我们只保留了一个 PrggRead(′(s

我怎样才能扭转这种局面:


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







使用PHP

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



...
请注意删除第一个和最后一个
,即使只提到过一次。在中间,我们只保留了一个

<代码> PrggRead(′
(s*br/>)+α','Br/>',$ You-South');

preg_replace('#<br />(\s*<br />)+#', '<br />', $your_string);
这将用单个

替换多个

的实例,可以选择用空格分隔它们


请注意,模式中的

与此完全匹配。如果您想更具防御性,可以将其更改为
]*>
,这将允许

标记具有属性(即

)或没有尾部斜杠。

首先,您应该编辑您的问题,因为第一个

没有出现

然后,要替换所有重复的

以及第一个和最后一个,您可以执行以下操作:

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

$str=@Ether虽然我大体上同意,但这并不是真正解析HTML,只是压缩重复的字符串。@Daniel:例如,从未见过


可以很容易地具有各种属性。@Wrikken事实上我有(参见我的答案;))。不过,复制品真的应该被引用。
===
...<br />
...<br />
...<br />
...
===