使用php从网站获取DOM元素

2022-07-22 00:00:00 curl dom php domdocument html

大家好,我想从网站获取一个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)
}

请帮帮忙。 提前谢谢。


解决方案

不需要在解析之前对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);阻止显示不同的警告。

相关文章