在h1标签周围添加标签以及其间的所有内容

时间:2017-10-19 16:02:25

标签: php html tags

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

<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 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>

非常感谢任何帮助。

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

1 个答案:

答案 0 :(得分:1)

我用python和漂亮的汤制作了类似的代码,如果你用树遍历你的HTML,这很容易。

您可以使用PHP Simple HTML DOM Parser

解析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。

希望这有帮助