PHP DOMDocument:从id获取属性值

时间:2017-10-10 14:52:14

标签: php dom

我想提取属性的值" value"使用id标记。

我的代码:

from u in DataContext.Users
where u.Division == strUserDiv 
&& u.Age != null ? u.Age > 18 : 1== 1
&& u.Height != null ? u.Height > 18 : 1== 1
&& u.Height != null ? u.Height > 18 : 1== 1
 select new DTO_UserMaster
       {
         Prop1 = u.Name,
       }).ToList();

我想要属性" 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;
?>

但代码只返回html代码。

我需要改变什么?

还可以将其修改为:

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

我收到此错误:

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

2 个答案:

答案 0 :(得分:2)

试试这个:

$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);

答案 1 :(得分:0)

请勿使用htmlentities,因为它会将文档的HTML代码从<html>更改为&lt;html&gt;,您的文档将不再是HTML ,只是一个充满&lt;&gt;的纯文本,因此获取节点的方法无法工作。