2011-06-20 14 views
6

ile bir div içeriğini alma Bu konuyla ilgili diğer Stackoverflow sorularına baktım ve burada sunulan çözümlerin hiçbiri benim için işe yaramıyor.PHP'nin DOM

Bir html sayfam var (file_get_contents() ile notlandırıldı) ve bu html bir "ana" kimliğine sahip bir div - Ben PHP'nin DOMDocument'i ya da benzer bir şeyle bu divanın içeriğini almam gerekiyor. Bu durumda, bazı şeyleri biraz karmaşıklaştıran SimpleHTMLDom ayrıştırıcısını kullanamıyorum.

$dom = new DOMDocument; 

$dom->loadHTML($html); 

$main = $dom->getElementById('main'); 

tefrika HTML almak için DOMDocument kullanma

+0

sen * ben bir HTML demek olduğunu div * içeriğini almak gerekir derken? – alex

+0

[DOMElement getElementById (string $ elementId)] (http://php.net/manual/en/class.domdocument.php) – Ibu

cevap

5

DOMDocument + XPath varyasyon:

$xml = new DOMDocument(); 
$xml->loadHtml($temp); 
$xpath = new DOMXPath($xml); 

$html = ''; 
foreach ($xpath->query('//div[@id="main"]/*') as $node) 
{ 
    $html .= $xml->saveXML($node); 
} 

Eğer innerHTML() (PHP DOMDocument Reference Question) arıyorsanız - xpath ilgili varyant in this answer verilir - Bu yanıt olarak yerine innerXML().

Burada değişikliklerle kabulü altı çizili:

$html = ''; 
foreach ($xpath->query('//div[@id="main"]/node()') as $node) 
              ###### 
{ 
    $html .= $xml->saveHTML($node); 
         #### 
} 
+0

Harika çalışıyor, çok teşekkürler. –

3

... ...

html = ''; 
foreach($main->childNodes as $node) { 
    $html .= $dom->saveXML($node, LIBXML_NOEMPTYTAG); 
} 

kullanın saveHTML() PHP versiyonu destekliyorsa.