PHP DOM nasıl işleneceğini

3 Cevap php

Benim PHP kodu

$dom = new DOMDocument();
@$dom->loadHTML($file);

$xpath = new DOMXPath($dom);
$tags = $xpath->query('//div[@class="text"]');

foreach ($tags as $tag) {
    echo $tag->textContent;
}

Ne burada yapmaya çalışıyorum sınıf 'metin' sahip div içeriği almak için ama ben döngü ve sonuçları echo sorun ben sadece görüntüleri ile HTML kodunu almak ve tüm edemez metin olsun p, br img ... vb gibi HTML etiketleri i $tag->nodeValue; kullanmaya çalıştı ama aynı zamanda hiçbir şey çalıştı.

3 Cevap

Şahsen ben beğendim Simple HTML Dom Parser.

include "lib.simple_html_dom.php"

$html = str_get_html($file);
foreach($html->find('div.text') as $e){
  echo $e->innertext;
}

Oldukça basit, değil mi? Bu jQuery gibi seçiciler barındırır :)

Yapmanız gereken şey, geçici bir belge oluşturmak için öğe eklemek ve sonra kullanıyoruz saveHTML():

foreach ($tags as $tag) {
  $doc = new DOMDocument;
  $doc->appendChild($doc->importNode($tag, true));
  $html = $doc->saveHTML();
} 

I http://www.php.net/manual/en/class.domelement.php bu parçacık bulundu:

<?php
function getInnerHTML($Node)
{
     $Body = $Node->ownerDocument->documentElement->firstChild->firstChild;
     $Document = new DOMDocument();    
     $Document->appendChild($Document->importNode($Body,true));
     return $Document->saveHTML();
}
?>

Değil bu olsa çalışırsa emin olun.