可能重复:
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');
答案 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值。