我正试图从我的另一个网站获取div。我试过这个,但它不起作用:
<?php
$page = file_get_contents('http://lemans.net.pl/wroclaw');
$doc = new DOMDocument();
$doc->loadHTML($page);
$div = $doc->getElementByID('part');
echo $div->nodeValue;
?>
答案 0 :(得分:1)
我对DOMDocument很好奇,所以我进行了一些实验。我编写了以下演示程序来说明一些可能对您有帮助的关键概念:
<?php
$page = file_get_contents('http://lemans.net.pl/wroclaw');
$doc = new DOMDocument();
$doc->loadHTML($page);
$doc->validateOnParse = true;
$div = $doc->getElementById('part');
echo "<br>------------------------------------------------------------<br>";
echo $tag = $div->hasChildNodes()?" hasChildNodes":" hasNoChildNodes";
echo "<br>------------------------------------------------------------<br>";
echo $div->tagName;
echo "<br>------------------------------------------------------------<br>";
$elements = $div->getElementsByTagName('*');
echo $elements->length;
echo "<br>------------------------------------------------------------<br>";
foreach ($elements as $node) {
echo $node->tagName . " - href: " . $node->getAttribute('href') . "<br>";
}
echo "<br>------------------------------------------------------------<br>";
echo htmlspecialchars($doc->saveHTML($div));
echo "<br>------------------------------------------------------------<br>";
echo $doc->saveHTML($div);
echo "<br>------------------------------------------------------------<br>";
?>
您可以尝试PHP小提琴:http://phpfiddle.org/main/code/8hf-nrk(点击“运行”按钮...)
一些解释和说明
(1)当您加载文档时,您可能会看到警告列表,其中一些警告与未正确编码的特殊字符相关,或者与混淆解析器的嵌套标签相关。
(2)validateOnParse
选项似乎没有什么区别,但我把它放在以防万一。
(3)从文档中获取存储在$div
中的节点后,您现在可以使用一个DOM片段。您可以执行tagName
之类的操作,查看是否hasChildNodes
等等。顺便说一下,nodeValue
为NULL或为空,因为div中没有内容,只是子元素。
(4)您可以使用getElementsByTagName
获取所有子节点的列表。请参阅列出标记名称和其中一个属性的foreach
循环。
(5)如果您想要回显div
及其子内容,请使用saveHTML
。
您可以通过htmlspecialchars
传递原始代码,也可以插入
div直接进入文档流程并显示活动链接和徽标图像。
我认为这应该会帮助你。祝你好运!