2012-09-04 63 views
1

我正在使用DOMCrawler來選擇基於CSS選擇器的HTML,就像這樣;使用Symfony Crawler來選擇HTML塊

$selector = '#content'; 
$html = $my_fetched_html; 
$crawler = new Crawler($html); 
$crawler = $crawler->filter($selector); 

這一切都是好的,如果我通過$履帶元素迭代,它證實了選擇工作,即,我只得到一個div,而不是完整的HTML。

但是,當談到節省HTML我有問題,因爲做這樣的事情;

$html = ''; 

foreach ($crawler as $domElement) { 
    $html.= $domElement->ownerDocument->saveHTML(); 
} 

echo $html; 

(作爲證明in this question

我再次得到充分的結構和我猜想它,因爲$ ownerDocument仍然是原來的(未選)$履帶式文件。

所以,我需要的是能夠實例化一個新的DomDocument(也許?)我的元素從那裏添加到它,然後saveHTML()方法。我認爲?

僞代碼;

$doc = new DomDocument 
foreach ($crawler as $domElement) { 
    $doc->addChild($domElement); 
} 

$new_html = $doc->saveHTML(); 

我很樂意幫忙,它開始做我的頭。

回答

2

您需要將您想要的HTML到saveHTML()方法的孩子。即做到這一點:

$html.= $domElement->ownerDocument->saveHTML($domElement); 
+0

美麗!謝謝。 – Christian