XPath在PHP中获取属性值

jer*_*use 31 php xpath

可能重复:
如何使用PHP的DOM Parser从XML中提取节点属性

如何提取HTML标记值?

HTML:

<input type="hidden" name="text1" id="text1" value="need to get this">
Run Code Online (Sandbox Code Playgroud)

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']");
Run Code Online (Sandbox Code Playgroud)

我怎样value才能"需要得到这个"

更新:

我得到了它的工作,并希望它也会帮助其他人.在上面的代码之后,我得到了以下值:

echo $filtered->item(0)->getAttribute('value');
Run Code Online (Sandbox Code Playgroud)

Mar*_*nen 35

XPath可以完成获取value属性的工作$xpath->query("//input[@name='text1']/@value");.然后,您可以遍历属性节点的节点列表并访问$value每个属性节点的属性.

  • 请关闭投票.它是重复的 (2认同)

TRO*_*DON 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'); 

}
Run Code Online (Sandbox Code Playgroud)


fea*_*age 8

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

//input[@name='text1']/@value
Run Code Online (Sandbox Code Playgroud)

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

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

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

 $xpath->query("//input[@name]/@name")->item(0).nodeValue;
Run Code Online (Sandbox Code Playgroud)

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

  • 不起作用 错误`未定义的属性:DOMNodeList :: $ value` (2认同)
  • 这对我有用:$ res = $ xpath-&gt; query(“ // input [@name] / @ name”); echo $ res-&gt; item(0)-&gt; nodeValue; (2认同)