2017-10-19 180 views
0

之間我有一些跟隨下面的順序代碼的所有內容 -添加周圍H1標籤標籤和

<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

是否有任何理由不能將h1包裹在一個範圍內? – MCMXCII

+0

@MCMXCII我認爲OP意味着在運行時。 – cometguy

+0

@MCMXCII不幸的是,我有很多已經在數據庫中的數據,並希望找到一種方法來完成這一切,而無需編輯每條記錄。 – JoshuaBrand

回答

1

我用python和美麗的湯做了一個類似的代碼,如果你用樹遍歷你的html,這很容易。在

foreach($html->find('h1') as $element) 

與跨度把它包

你可以使用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標籤(或DIV也許?)新標籤,然後在將所有不是h1的同級所有(並從樹中刪除)到這個新標籤中的同時找到下一個h1。

$element->next_sibling() 
... 

然後用您創建的新標籤替換原來的h1。

希望這會有幫助