使用php从网站获取DOM元素
大家好,我想从网站获取一个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);
阻止显示不同的警告。
相关文章