XPath在PHP中获取属性值

时间:2011-11-06 13:33:28

标签: php xpath

  

可能重复:
  How to extract a node attribute from XML using PHP's DOM Parser

如何提取HTML标记值?

HTML:

<input type="hidden" name="text1" id="text1" value="need to get this">

PHP:

$homepage = file_get_contents('http://www.example.com');
$doc = new DOMDocument;
$doc->preserveWhiteSpace = false;
@$doc->loadHTML($homepage);
$xpath = new DOMXpath($doc);
$filtered = $xpath->query("//input[@name='text1']");

如何让value成为“需要得到这个”

更新

我得到了它的工作,希望它也能帮助别人。在上面的代码之后我得到了值:

echo $filtered->item(0)->getAttribute('value');

3 个答案:

答案 0 :(得分:35)

XPath可以使用$xpath->query("//input[@name='text1']/@value");来获取value属性。然后,您可以迭代属性节点的节点列表并访问每个属性节点的$value属性。

答案 1 :(得分:11)

查看DOM的这种方法 http://www.php.net/manual/en/domelement.getattribute.php

var array_result = arrray();
foreach (filtered as $key => $value){

    $array_result[] = $value->getAttribute('ID'); 

}

答案 2 :(得分:8)

我不熟悉PHP语法,但要选择value属性,您将使用以下xpath:

//input[@name='text1']/@value

然而,xpath不返回字符串,它返回节点。你想要节点的nodeValue,所以如果PHP遵循约定,那么代码将是:

 $xpath->query("//input[@name='text1']/@value")->item(0).nodeValue;

出于学习目的,请记住,您始终要检查nodeValue属性。因此,如果你想要相同元素的名称,你可以使用:

 $xpath->query("//input[@name]/@name")->item(0).nodeValue;

您可能希望在查询nodeValue属性之前确保查询返回非null值。