正则表达式删除多个<br/>标签,其中包含可能的空格

时间:2015-05-27 12:30:44

标签: php regex

我有一个带有textarea的表单,该字段应用了一个javascript文本编辑器,它将换行符转换为<br />标签,我想要的是编写一个php函数来清理带有许多空行的文本将它们限制为1(所以2个换行符)。

例如,如果用户写something<br /> <br /> <br /><br />something else(请注意,还有一些空格),我想要something<br /><br />something else

目前我已编写此模式/(?:(?:<br \/>)\s*){3,}/s,但它与多个<br />标记不匹配,其中包含空格。

我应该如何编写正确的正则表达式?

1 个答案:

答案 0 :(得分:0)

只需使用strip_tags这样的功能:

$text = '<p>Test<br>paragraph.</p><br /><!-- Comment --> <a href="#fragment">Other   text</a>';
echo strip_tags($text);

有关函数here

的更多信息

如果您想要保留标记<p>,只需将标记作为第二个参数传递:

echo strip_tags($text,'<p>');

如果您只想删除<br><br />,可以使用:

$text = preg_replace("/(<br>|<br\s\/>)/", "", $text);

我想我终于得到了它(如果超过3 <br>),它们将被替换为只有两个:

$text = 'something<br />  <br />   <br /><br /> <br>something<br />else';
$text = preg_replace("/[(<br>|<br\s\/>)]{3,}/", "<br><br>", $text);