0

我有一个带有未知数量br标签的 PHP 字符串。我只需要保留一个。

开始字符串

$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 />
4

2 回答 2

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.
于 2013-05-14T11:57:04.587 回答
1

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

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

在此处输入图像描述

在此处输入图像描述

于 2013-05-14T13:14:17.297 回答