2012-07-16 54 views
1

我有一種情況,我需要提取一部分xHTML頁面,包括標記。提取部分HTML文檔 - 需要包含xHTML標記

這種情況下的正則表達式不是正確的路由,因爲我不能保證子div的確切數量。

<div id="myDiv"> 
    <div><p>This is some content</p></div> 
    <div><p>This additional content</p></div> 
</div> 

所以,在上面的代碼段中,我需要提取<div><p>This is some content</p></div>,其包括標記。

我已經做了一些調查使用xPath,它似​​乎是這樣做的方式,但我不知道如何讓它不僅返回節點的值,但所有關聯加價。

回答

1

你是正確的,這可以通過DOMDocumentXPath像這樣來實現:

$doc = new DOMDocument(); 
$doc->loadHTML($html); // Load the HTML snippet 

$xpath = new DOMXPath($doc); 
$node = $xpath->query('//div[@id="myDiv"]/div')->item(0); // Get the <div> 

$saved_node = $doc->saveHTML($node); // Export that node 

the output,你可以看到所需的字符串,包括標記:

string(62) "<div><p>This is some content</p></div>" 

注意,我必須通過htmlentities()運行輸出,因此您將看到<div>而不查看頁面的來源。

+2

謝謝先生!我很接近......但缺少$ doc-> saveHTML部分。 – 2012-07-16 17:24:24