ジャックによって回答された私の質問へのフォローアップの質問があります: PHP で HTML のセグメントを div でラップする (および HTML タグから目次を生成する)
次の結果を得るために、上記の回答にいくつかの機能を追加しようとしています。
これは私の現在のHTMLです:
<h3>Subtitle</h3>
<p>This is a paragraph</p>
<p>This is another paragraph</p>
<h3>Another subtile
<h3>
<p>Yet another paragraph</p>
これが私が達成したいことです:
<h3 class="current">Subtitle</h3>
<div class="ac_pane" style="display:block;">
<p>This is a paragraph</p>
<p>This is another paragraph</p>
</div>
<h3>Another subtitle</h3>
<div class="ac_pane">
<p>Yet another paragraph</p>
</div>
上記の例からコードを変更しようとしましたが、理解できません。
foreach ($d->getElementsByTagName('h3') as $h3) {
$ac_pane_nodes = array($h3);
for ($next = $h3->nextSibling; $next && $next->nodeName != 'h3'; $next = $next->nextSibling) {
$ac_pane_nodes[] = $next;
}
$ac_pane = $d->createElement('div');
$ac_pane->setAttribute('class', 'ac_pane');
// Here I'm trying to wrap all tags between h3-sets, but am failing!
$h3->parentNode->appendChild($ac_pane, $h3);
foreach ($ac_pane_nodes as $node) {
$ac_pane->appendChild($node);
}
}
class="current"
最初の h3 セットへの の追加、および最初のstyle="display:block;"
へのの追加div.ac_pane
はオプションですが、非常に高く評価されることに注意してください。