2011-11-25 74 views
0

我希望下面的代码能够回应在配备的元素中找到的字符串。
这不可行吗?从DOM树中提取节点值

<? 

    $doc = new DOMDocument(); 
    $doc->loadHTML('http://website.com'); 

    $elements = $doc->getElementByID("equipped"); 

    echo $elements->nodeValue . "\n"; 



    ?> 
+0

它是什么类型的元素? – prodigitalson

+0

我已经尝试了几种不同的元素。divs和span主要是通过 – Shawn

+0

不应该是'loadHTMLFile'吗? – fardjad

回答

1

当使用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"; 
    } 
?> 

希望它能帮助。

+0

似乎应该工作,但事实并非如此。我想知道在我们回显值之前是否可以查看数组是否为空 – Shawn

+0

问题是getElementById()方法返回单个元素。它是否抛出任何异常?错误日志中是否有任何内容? – ramsvidor

+0

哎呀..刚刚在代码中发现错误。更新。 – ramsvidor