在 h1 标签和介于两者之间的所有内容周围添加标签



我有一些代码遵循如下顺序 -

<h1>Title</h1>
<p>Text here</p>
<ul><li>maybe a list</li></ul>
<h1>Title 1</h1>
<p>More text here</p>
<h2>maybe a h2 somewhere</h2>

我想知道,通过使用 PHP 和/或 jQuery,是否有任何方法可以用一个 span 标签包装每个 h1 标签,直到下一个 h1 标签(所以 p、ul 或 h2 标签)在另一个 span 标签中,所以我最终得到如下的东西 -

<span class="header"><h1>Title</h1></span>
<span class="content">
<p>Text here</p>
<ul><li>maybe a list</li></ul>
</span>
<span class="header"><h1>Title 1</h1></span>
<span class="content">
<p>More text here</p>
<h2>maybe a h2 somewhere</h2>
</span>

任何帮助将不胜感激。

编辑 - 应该在此之前添加整个文本作为一行数据来自数据库。

我已经用python和漂亮的汤做了一个类似的代码,如果你用树遍历你的html,这很容易。

你可以使用PHP Simple HTML DOM解析器

解析 html :

$html = str_get_html('<h1>Title</h1><p>Text here</p><ul><li>maybe a list</li></ul><h1>Title 1</h1><p>More text here</p><h2>maybe a h2 somewhere</h2>');

然后找到所有的H1标签:

foreach($html->find('h1') as $element) 

用你的span(或者div?)包裹在新标签中,并在将所有(并从树中删除)不是h1的同级添加到这个新标签中时找到下一个h1。

$element->next_sibling()
...

然后将原始 h1 替换为您创建的新标签。

希望这有帮助

最新更新