PHP - 删除重复的HTML标记

时间:2013-05-14 11:39:38

标签: php regex replace

我的PHP字符串包含未知数量的br标记。我只需要保留一个。

开始字符串

$str = 'A line of string data<br><br><br><br>with duplicate br tags in here.';
$str2 = 'Another line with 5 br tags this time.<br><br><br><br><br>New line.';
$str3 = 'When it<br /><br><br />breaks';

结果

$str = 'A line of string data<br>with duplicate br tags in here.';
$str2 = 'Another line with 5 br tags this time.<br>New line.';
$str3 = 'When it<br>breaks';

我的想法

  • 首先我使用了str_replace('<br>', '', $str)。它不是很好,因为连续的重复标签数量是未知的。
  • 一些聪明的正则表达式可以解决它吗?或另一种解决方案?
  • 如果它可以使用或不使用结束斜杠,那将会很好。 <br><br />

2 个答案:

答案 0 :(得分:3)

试试这个..

$str = 'A line of string data<br><br><br><br>with duplicate br tags in here.';
echo preg_replace('#(<br\s?/?>)+#', '<br>', $str);

<强>输出

A line of string data<br>with duplicate br tags in here.

答案 1 :(得分:0)

这将找到br标记的所有实例,后跟多个br标记。

(<([bB][Rr]\b)[^>]{0,}>(?:<\2[^>]{0,}>){1,})

enter image description here

enter image description here