我有一個跟進問題,我的問題已經回答了@Jack: Wrap segments of HTML with divs (and generate table of contents from HTML-tags) with PHP裹在PHP H3標籤集合與DOM文檔之間的所有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是可選的,但將非常感謝!
任何人都可以請快速幫忙嗎?提前致謝。
XSLT是我推薦的,但是與它分組是很複雜的,至少說(即將連續的p標籤分組到一個div中)是複雜的。這是需要考慮的事情。如果您願意接受XSLT解決方案,請告訴我。 – matb33
謝謝!你檢查了上面的鏈接嗎?這個解決方案做了一些適當的分組,我只需要對它進行修改,以便它包含除了所討論的h3之外的所有內容......你可以看看嗎?提前致謝。 – maartenmachiels
這個版本和鏈接之間有一個關鍵的區別。在鏈接版本中,h2被包含作爲獲取包裝的節點集的一部分,而在此版本中,h3不在集合中。這就是你遇到問題的地方。如果這個提示不能削減它,讓我知道,我會爲你寫一個工作版本 – matb33