2013-03-08 56 views
1

我嘗試使用指向的標記將html文件分隔爲2。如何在PHP中使用特殊標記將html分隔爲2個文件

<html> 
    <head> 
     <title>html title</title> 
    </head> 
    <body> 
     <h1>hello title</h1> 
     <p class="p2"> 
     <span>here is some txt</span> 
     </p> 
     <p class="p2"> 
     hello test, <a id="chp"></a>here is some txt 
     </p> 
    </body> 
</html> 

如果我所限定的分離器是<一個ID = 「CHP」 > < /一個>。這兩個文件應該如下

文件1:

<html> 
    <head> 
     <title>html title</title> 
    </head> 
    <body> 
     <h1>hello title</h1> 
     <p class="p2"> 
     <span>here is some txt</span> 
     </p> 
     <p class="p2"> 
     hello test, 
     </p> 
    </body> 
</html> 

文件2:

<html> 
    <head> 
     <title>html title</title> 
    </head> 
    <body> 
     <h1>hello title</h1> 
     <p class="p2"> 
     <span>here is some txt</span> 
     </p> 
     <p class="p2"> 
     <a id="chp"></a>here is some txt 
     </p> 
    </body> 
</html> 

可有人告訴我如何實現這一點?

感謝

回答

0

如果使用SimpleXML庫加載HTML,然後你可以通過HTML對象遍歷檢查每個元素。如果您檢查每個元素的子節點,在移動到下一個元素之前,對於其標記爲a且屬性爲id ='chp'的元素,可以在該元素之後中斷複製並移除內容(直到父元素),克隆SimpleXML對象,然後用前一個SimpleXML對象中的複製內容替換整個元素。

+0

是的,謝謝你的快速回答。此解決方案的另一個問題是,此解決方案是否對2-3M的html文件有性能問題?有時候也許我們還有10個這樣的分隔符。 – 2013-03-08 12:45:18

+0

我不確定性能,但我相信simplexml是實現你想要實現的最好方法。如果你有超過2個,那麼你不必在這個時候打破這個功能,你可以讓它繼續直到HTML結束,但是如果它很大,你會消耗大量的內存。 – topherg 2013-03-08 13:35:04

相關問題