Php 从DOM树中提取节点值
我想让下面的代码回显在装备元素中找到的字符串。Php 从DOM树中提取节点值,php,html,parsing,screen-scraping,web-scraping,Php,Html,Parsing,Screen Scraping,Web Scraping,我想让下面的代码回显在装备元素中找到的字符串。 这不应该起作用吗 <? $doc = new DOMDocument(); $doc->loadHTML('http://website.com'); $elements = $doc->getElementByID("equipped"); echo $elements->nodeValue . "\n"; ?> 当使用DOMDocument::getEleme
这不应该起作用吗
<?
$doc = new DOMDocument();
$doc->loadHTML('http://website.com');
$elements = $doc->getElementByID("equipped");
echo $elements->nodeValue . "\n";
?>
当使用
DOMDocument::getElementById()
时,我建议您将属性validateOnParse
设置为true,以确保文档格式正确,并且方法可以正常工作
如果节点的内容仅为文本,则可以尝试textContent
属性。nodeValue
属性值可能因元素类型而异
它看起来是这样的:
<?php
$doc = new DOMDocument();
$doc->validateOnParse = true;
$doc->loadHTMLFile('http://website.com');
$element = $doc->getElementById("equipped");
if (!is_null($element)) {
$content = $element->nodeValue;
if (empty($content)) {
$content = $element->textContent;
}
echo $content . "\n";
}
?>
希望有帮助。我尝试了几种不同的元素。。div和span大多数都认为它不应该是
loadHTMLFile
?看起来它应该工作,但它不是。我想知道在我们回显值之前是否可以看到数组是否为空。问题是方法getElementById()
返回单个元素。它会抛出任何异常吗?错误日志中有什么内容吗?您可以在PHP安装中查看更多内容:是否启用了libxml?错误配置是否正确记录?@fardjad你说得对!它必须是loadHTMLFile()
。否则,您需要以字符串形式提供HTML源代码以进行解析。刚刚更新了我的答案。