php - 替换双换行符,除非标签
问题描述
我有一些数据库内容作为变量,我想把双换行符变成<p>...</p>
对于我想添加的单行换行符<br />
我可以这样做:
$content = nl2br($content, false);
$content = '<p>' . preg_replace('#(<br>[\r\n\s]+){2}#', '</p><p>', $content) . '</p>';
但是,我需要排除具有 h2、h3、h4、ul 并且在 ul 标记内的段落。但我仍然需要在其他 HTML 标签周围添加 p 标签,例如<strong>
<blockquote>
<img>
<i> <em>
等<caption>
一个示例文本是:
<h2>Lorem ipsum dolor sit amet, consectetur adipiscing elit</h2>
Vivamus vel tempor turpis, <strong>non rutrum quam</strong>. Suspendisse ac rhoncus felis, eget porta lectus.
Nam vulputate sapien risus, vel vehicula mi volutpat sed.
<ul>
<li>Sed feugiat nibh at nisl eleifend scelerisque.</li>
<li>Aliquam non maximus ipsum. Aliquam erat volutpat.</li>
</ul>
<h3>Praesent eget diam sit amet leo vehicula sagittis at quis tortor</h3>
Nunc nec sem ac nunc tincidunt aliquam ut nec dolor. Nulla facilisi.
<img alt="xxxx" src="xxx.png" class="xxxxx"/>
<caption><i>ccccc</i></caption>
<img alt="xxxx" src="xxx.png" class="xxxxx"/>
<i>ccccc</i>
<strong>Nunc nec sem ac nunc tincidunt aliquam ut nec dolor. Nulla facilisi.</strong>
Vivamus vel tempor turpis, <strong>non rutrum quam</strong>. Suspendisse ac rhoncus felis, eget porta lectus.
Nunc nec
Nunc nec
Nunc nec
<blockquote class="twitter-tweet" data-lang="en"><p lang="en" dir="ltr">Vivamus vel tempor turpis <a href=""></a></p>— xxxxx (@xxxxxx) <a href="https://twitter.com/xxxx/status/x?ref_src=x">February 15, 2019</a></blockquote>
<script async src="" charset="utf-8"></script>
解决方案
您应该在列表中添加<br>,如下所示:
$content = '<p>' . preg_replace('#([\<br\>\r\n\s]{2})#', '</p><p>', $content) . '</p>';
推荐阅读
- c# - 如何在第一次尝试时选择打开 Unity 游戏的显示器
- cplex - CPLEX - 发生溢出 (OPL IDE)
- snowflake-cloud-data-platform - 雪花:在预定时间之外启动任务
- javascript - 如何在 Sinon.js 中测试控制器中使用的辅助函数
- c# - Cosmos DB 在 LINQ 中查询日期时间在使用 ToList() 时有效,但在 IQueryable 时无效
- arrays - 将数字终端输入读入数组并对数组进行排序 [Bash]
- node.js - Webpack 仍然包含一个明确排除的文件夹
- sql - 所有的sql条件
- python - 更新熊猫数据框单元格值
- r - 网页抓取没有 html 类的表格