大家好我想从网站上获取一个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)
}
请帮忙。 提前谢谢。
答案 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);
显示不同的警告。