我有一些代码遵循如下顺序 -
<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 替换为您创建的新标签。
希望这有帮助