【问题标题】:PHP DOMDocument: Get attribute value from idPHP DOMDocument:从id获取属性值
【发布时间】:2018-03-22 00:59:33
【问题描述】:

我想用id标签提取属性“value”的值。

我的代码:

<?php
 $url = 'http://turni.tt-contact.com/Default.aspx';
 $contents = htmlentities(file_get_contents($url));
 echo $contents."\n"; //html
 $dom = new DOMDocument;
 $dom->validateOnParse = true;
 $dom->loadHTML($contents);
 $dom->preserveWhiteSpace = false;
 $data = $dom->getElementById("__VIEWSTATE");
 echo $data->nodeValue;
?>

我想要属性“value”->“THIS”:

   <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="THIS">

但代码只返回 html 代码。

我需要改变什么?

也可以修改为:

$xpath = new DOMXpath($dom);
$data = $xpath->query('//input[@id="__VIEWSTATE"]');
$node = $data->item(0);
echo $node->getAttribute('value');

我收到此错误:

  Fatal error: Call to a member function getAttribute() on null 

【问题讨论】:

标签: php dom


【解决方案1】:

试试这个:

$data->getAttribute('value'); 

PHP: DomElement->getAttribute

$attrs = array();
 for ($i = 0; $i < $data->attributes->length; ++$i){
   $node = $data->attributes->item($i);
   $attrs[$node->nodeName] = $node->nodeValue;
 }
 var_dump($attrs);

【讨论】:

  • 不起作用 -> 致命错误:在 null in 上调用成员函数 getAttribute()
  • 你能 var_dump $data 吗?向我们展示内容也许你的变量是空的
  • 我已经运行:$dom = new DOMDocument; $dom->loadHTML($contents); $data = $dom->getElementById("__VIEWSTATE"); var_dump($data);我得到 NULL
  • 尝试删除这一行:$dom-&gt;preserveWhiteSpace = false; 和 var_dump 再次
  • 输出:pastebin.com/JJJDveQP 我得到:object(DOMNodeList)#3 (1) { ["length"]=> int(0) }
【解决方案2】:

不要使用htmlentities,因为它会将文档的 HTML 标签从:&amp;lt;html&amp;gt; 更改为 &amp;lt;html&amp;gt;,并且您的文档将不再是 HTML,而是一个充满 &amp;lt;&amp;gt; 的纯文本,因此获取节点的方法不起作用。

【讨论】:

    猜你喜欢
    • 2011-10-13
    • 2010-12-08
    • 2013-05-14
    • 1970-01-01
    • 2014-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多