我有一些代码遵循以下顺序 -
<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>
非常感谢任何帮助。
编辑 - 应该在此之前添加整个文本作为一行数据来自数据库。
答案 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。
希望这有帮助