使用DOMDocument通过id提取并打印html元素

max*_*max 2 php domdocument

我想从网页中提取几张桌子并将它们显示在我的页面中

我本打算使用正则表达式来提取它们,但是随后我看到了DOMDocument类,并且看起来更干净一些,我似乎在stackoverflow中进行了查找,似乎所有问题都与获取内部文本或使用循环获取元素的内部节点有关。我现在想知道如何通过id提取并打印html元素。

$html = file_get_contents("www.site.com");
$xml = new DOMDocument();
$xml->loadHTML($html);
$xpath = new DOMXPath($xml);
$table =$xpath->query("//*[@id='myid']");
$table->saveHTML(); // this obviously doesn't work
Run Code Online (Sandbox Code Playgroud)

我如何在我的页面上显示或回显$ table作为实际的html表?

Dav*_*dom 5

首先,DOMDocument有一个getElementById()方法,因此您的XPath是不必要的-尽管我怀疑这是它的工作原理。

其次,为了获取标记的片段而不是整个文档,请使用DOMNode::C41N(),因此您的代码应如下所示:

<?php

    // Load the HTML into a DOMDocument
    // Don't forget you could just pass the URL to loadHTML()
    $html = file_get_contents("www.site.com");
    $dom = new DOMDocument('1.0');
    $dom->loadHTML($html);

    // Get the target element
    $element = $dom->getElementById('myid');

    // Get the HTML as a string
    $string = $element->C14N();
Run Code Online (Sandbox Code Playgroud)

请参阅工作示例