2013-12-15 41 views
0

我試圖在遠程頁面中找到第一個div元素,但遇到了困難。以下是我迄今爲止:查找並打印HTML文檔中的第一個div

$url = "http://feed2all.eu/watch/193916/1/watch-skysports.html"; 
$html = file_get_contents($url); 
$doc = new DOMDocument(); // create DOMDocument 
libxml_use_internal_errors(true); 

$doc->validateOnParse = true; 
$doc->preserveWhiteSpace = false; 
$doc->loadHTML($html); // load HTML you can add $html 

$xpath = new DOMXpath($doc); 
$nodes = $xpath->query("//div"); 
foreach($nodes as $node) { 
    echo $node; 
} 

我也試着使用:

$divs = $doc->getElementsByTagName('div'); 
foreach ($divs as $div) { 
    echo $div; 
} 

編輯:如何呼應的有格

   $xpath = new DOMXpath($doc); 
      $div = $xpath->query("//div[1]")->item(0); 
      function get_inner_html($div) { 
      $innerHTML= ''; 
      $children = $div->childNodes; 
      foreach ($children as $child) { 
      $innerHTML .= $child->ownerDocument->saveXML($child); 
       } 
      echo $innerHTML; 
       } 

內部HTML它給空白頁

+0

您需要調用的函數:'get_inner_html($ DIV);' – hek2mgl

+0

@ hek2mgl請及時與完整的代碼相應地更新你的答案。 – user3080937

回答

1

如果你想要第一個div使用:

$div = $xpath->query("//div[1]")->item(0); 

另外,您不能使用echo來打印DOMElement。您可以打印它的值:

echo $div->nodeValue; 

或它的屬性:

echo $div->getAttribute('foo'); 

在評論你問的方式來獲得divinnerHTML。這裏談到一個例子,如何獲得的this站點中的第一標籤的HTML:

$url = 'http://stackoverflow.com/questions/20600265/find-print-the-first-div-in-an-html-document?noredirect=1#comment30824495_20600265'; 

$doc = new DOMDocument(); 
@$doc->loadHTML(file_get_contents($url)); 
$selector = new DOMXPath($doc); 

$div = $selector->query('//div[1]')->item(0); 
var_dump($doc->saveHTML($div)); 
+0

那我該如何迴應我得到的div的源代碼? – user3080937

+0

請查看http://php.net/manual/de/class.domelement.php#101243 – hek2mgl

+0

請不要在評論中發佈源代碼。這是不可讀的,至少對於人類來說。更新問題並添加 – hek2mgl