PHP:从字符串中删除多余的<br>和标签

5

我该如何从字符串的开头和结尾删除多余的<br>&nbsp;标签?

谢谢 :)

2个回答

12

试试这个:

$str = preg_replace('{^(<br(\s*/)?>|&nbsp;)+}i', '', $str); //from start
$str = preg_replace('{(<br(\s*/)?>|&nbsp;)+$}i', '', $str); //from end

同时支持 XHTML 格式的 <br /><br/> 写法。


似乎不能识别多个换行符。 - user90501
对我来说这个可以工作:$str = '<br><br>this is a test<br><br>'; 你能给我一个它不能正常工作的字符串的例子吗? - Kip
你是正确的..我没有意识到我的显示函数在执行nl2br。谢谢! - user90501
你可能需要做   - mpen
我曾经遇到过同样的问题。尝试使用&nbsp;,但它会完全保留字符串。它似乎只转换 。 - Seb
@ThomasW:感谢您的编辑。看起来 Stack Overflow 已经修复了 5 年前存在的任何解析问题。 :) - Kip

0
使用 preg_replace 函数:
$str = "<br>some text&nbsp;"
$str = preg_replace('/(^(<br>|&nbsp)*)|((<br>|&nbsp)*$)/i', '', $str);

没有测试过,但是应该可以这样做。


我得到了“/g”未知修饰符。 - user90501
我认为在PHP中不需要/g...? - mpen
你说得对,那不是搜索而是替换...我现在会更改,抱歉。 - Seb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接