首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多次<br /> <br ><br /> \r\n发生需要替换为<br/>。

多次<br /> <br ><br /> \r\n发生需要替换为<br/>。
EN

Stack Overflow用户
提问于 2016-09-14 04:20:51
回答 1查看 231关注 0票数 0

我需要将<br /><br><br/>\r\n\r\n的多次出现替换为1 <br />,但只有在出现在一起的情况下,才能将段落拆分成数组,并在字符串末尾剪短br标记的最后一行.

字符串示例可以如下所示:

代码语言:javascript
复制
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>

我试过的是:

代码语言:javascript
复制
$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>标记。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-14 04:29:53

您可能想先尝试使用行尾(PHP_EOL)爆炸,除去除<a>之外的所有东西,然后是array_filter()implode()trim()

代码语言:javascript
复制
$str    =   '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 />';

$str    =   trim(implode('<br />'.PHP_EOL,array_filter(explode(PHP_EOL,strip_tags($str,'<a>')))));

echo $str;

给你:

代码语言:javascript
复制
This is paragraph 1<br />
This is paragraph 2<br />
This is paragraph 3<br />
This is paragraph 4<br />
This is paragraph 5<br />
This is paragraph 6<br />
This is paragraph 7

您的第二个场景:

代码语言:javascript
复制
$str    =   '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 5
This is paragraph 6


This is paragraph 7<br />';

# Explode on line breaks and remove empty lines
$exp    =   array_filter(explode(PHP_EOL,$str));
# Loop array and filter the lines
$new    =   array_map(function($v) {
                return strip_tags(trim($v,'<br>,<br />,<br/>'),'<a><br>');
            },$exp);
# Implode the array back
echo implode('<br />'.PHP_EOL,$new);

给你:

代码语言:javascript
复制
This is paragraph 1<br />
This is paragraph 2<br />
This is paragraph 3<br />
This is paragraph 4<br />
This is paragraph 5<br/>This is paragraph 5<br />
This is paragraph 6<br />
This is paragraph 7
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39482430

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档