【发布时间】:2016-09-14 12:41:25
【问题描述】:
我需要将多次出现的<br />、<br>、<br/>、\r、\n、\r\n 替换为仅 1 个<br />,但仅限于它同时出现的位置,以便我可以将段落拆分成一个数组,并去掉字符串末尾br标签的最后一个换行符...
字符串示例如下:
This is paragraph 1<br>
This is paragraph 2<br /><br>
This is paragraph 3
This is paragraph 4
This is paragraph 5<br/>
This is paragraph 6
This is paragraph 7<br />This is paragraph 8
This is paragraph 9<br>
我尝试过的:
$description = !empty($results['Description']) ? strip_tags(rtrim(str_replace(array("\n", "\r", "\r\n", "<br>", "<br/>", "<br />"), array("<br />"), $results['Description']), '<br />'), '<br><a>') : '';
$paragraphs = array_filter(explode("<br />", $description));
但这会删除所有换行符。我需要在字符串中保留换行符,但只想做 1 个换行符并删除所有其他换行符。如何做到这一点?
注意:我使用的是strip_tags,因为我只想在$description 字符串中允许<br> 和<a> 标签。
【问题讨论】:
-
This的可能重复
-
我的不仅仅是
br标签,还包括br和\r,\n -
但是为什么我的代码不起作用?
-
您的代码不起作用,因为您将每次出现的
<br />、\n、\r和\n\r替换为<br />。因此,对于test<br />\n\r\<br />,您的代码将生成test<br /><br /><br />。 @Virb 向您指出的解决方案正好解决了这个问题。当然,您需要修改该代码以包含\n、\r等,但它确实解决了您的问题。 -
先用正则表达式组合
<br>,然后在\r\n上使用str_replace
标签: php str-replace paragraphs