我需要一种方法来使用包装所有<p>
标记,直到标记更改之前的最后一个结束</p>
标记。因此,每个没有标记的P标记或<p>
以外的标记都会启动匹配。每个标记以</p>
结尾,但后跟不是段落的标记,标记该匹配的结束。
我试过用这个:
$content = preg_replace( "/(<(p|ul)>[\s\S]*?(?=<h\d.*?>|<\/ul>))/Si", '<div class="content-block">$0</div>', $content );
但仅当段落标记位于标题标记之间时才有效。我需要更灵活的东西。这是我的意思的一个例子(对不起,如果这是粗糙的,不知道如何在视觉上描绘我需要的东西):
<div class="wrapper">
<p></p>
<p></p>
</div>
<h2>Information<h2>
<div class="wrapper">
<p></p>
<p></p>
<p></p>
</div>
<h2>Another Header Here</h2>
<div class="wrapper">
<p></p>
<p></p>
</div>
<h3>Header Three</h3>
<div class="wrapper">
<p></p>
<ul>List Item</ul>
<p></p>
</div>
答案 0 :(得分:0)
自己想出来。我需要一个更通用的选择器来选择除特定标签之外的所有东西。以下是我提出的建议:
$content = preg_replace( "/((<p|<ul|<ol|<blockquote)(?:(?!\n<h|\n<table).)*)/sm", '<div class="content-block">$0</div>', $content );