使用php从网站获取Dom元素

时间:2017-03-08 22:26:38

标签: php html curl dom domdocument

大家好我想从网站上获取一个HTML节点,以便在我的网站上显示它,但我不能这样做。

这是我的代码。

$html = htmlentities(file_get_contents("http://stackoverflow.com/"));
$doc = new DOMDocument();
$doc->loadHTML($html);
$h1 = $doc->getElementsByTagName("title");
var_dump($h1);

这就是结果。

object(DOMNodeList)#2 (1) {
  ["length"]=>
  int(0)
}

请帮忙。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

在解析之前,不需要在html字符串上应用htmlentities。如果这样做,则替换所有尖括号,并且解析器将不再找到任何标记。

还没有必要使用file_get_contents来加载文件,因为DOMDocument有一个方法可以执行此操作。

在您的评论中,您没有使用好的方法来加载带有URL的HTML文件(而不是HTML字符串)。

DOMDocument方法为DOMDocument::loadHTMLFile而不是DOMDocument::loadHTML

$doc = new DOMDocument();
$doc->loadHTMLFile("http://stackoverflow.com/");
$h1 = $doc->getElementsByTagName("title")->item(0)->textContent;
echo $h1, PHP_EOL;

请注意,您可以阻止在此方法之前使用libxml_use_internal_errors(true);显示不同的警告。