Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从DOM树中提取节点值_Php_Html_Parsing_Screen Scraping_Web Scraping - Fatal编程技术网

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源代码以进行解析。刚刚更新了我的答案。