Php 替换双换行符,标记时除外
我有一些db内容作为变量,我想把双线分隔变成Php 替换双换行符,标记时除外,php,regex-negation,Php,Regex Negation,我有一些db内容作为变量,我想把双线分隔变成.. 对于单行换行符,我要添加 我可以使用以下方法进行此操作: $content = nl2br($content, false); $content = '<p>' . preg_replace('#(<br>[\r\n\s]+){2}#', '</p><p>', $content) . '</p>'; $content=nl2br($content,false); $content=“”
..
对于单行换行符,我要添加
我可以使用以下方法进行此操作:
$content = nl2br($content, false);
$content = '<p>' . preg_replace('#(<br>[\r\n\s]+){2}#', '</p><p>', $content) . '</p>';
$content=nl2br($content,false);
$content=“”。preg#u replace(“#(
[\r\n\s]+){2}#,”,$content)。” ",;
但是,我需要排除包含h2、h3、h4、ul和ul标签的段落。但是我仍然需要在其他HTML标记周围添加p标记,例如
ccccc
ccccc
Nunc nec sem ac Nunc tincidunt ALIQUA ut nec dolor。无便利条件。
临时turpis的Vivamus vel,非rutrum quam。猫斜角肌悬吊术。
Nunc nec
Nunc nec
Nunc nec
Vivamus vel Temporal turpis
&mdash;xxxxx(@xxxxxx)
您应该在下面的列表中添加:
<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>
$content=''。preg#u replace(“#([\\r\n\s]{2})”,“”,$content)。” ",;
我建议不要使用nl2br()
函数——您将在不需要标记的地方到处插入
标记
相反,我建议您直接在换行符之外执行正则表达式,忽略已经被标记包围的行,如下所示:
(?i)^(?)((-是这样吗?谢谢。几乎有效,但它提供了很好!虽然在某些情况下我确实需要添加。我正在更新问题…此外,如果单换行符,我希望有
且不在itI周围添加p标记,我更新了我的答案。没有解决单换行符的用例,因为这超出了原始问题,但这应该可以让您达到90%的效果。谢谢。奇怪的是,它对测试中的内容有效,但在应用于脚本中的变量时无效。\n保持不变,就像它无法识别它们来应用正则表达式一样。我试着在成为正则表达式之前输出变量并将其复制到测试仪上,它可以是的,但不是在我的脚本中!下次当我在计算机前时,我将通过php脚本为您运行它,我没有在regex fiddle之外进行测试
$content = '<p>' . preg_replace('#([\<br\>\r\n\s]{2})#', '</p><p>', $content) . '</p>';
$regex = '#(?i)^(?!((<\/|<)(h[1-6]|ul|li|script|blockquote)(\s.+)*>))(.+)(?!(<(\/\3)>))$#';
$content = preg_replace($regex, "<p>$5</p>", $content);