web-dev-qa-db-ja.com

XPathは、PHP

可能性のある複製:
PHPのDOMパーサーを使用してXMLからノード属性を抽出する方法

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');
30
jerrymouse

XPathは、$xpath->query("//input[@name='text1']/@value");を使用して値属性を取得するジョブを実行できます。次に、属性ノードのノードリストを反復処理し、$value各属性ノードのプロパティ。

35
Martin Honnen

DOMのこのメソッドを見てください http://www.php.net/manual/en/domelement.getattribute.php

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

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

}
11
TROODON

このためのPHP構文はよくわかりませんが、値属性を選択するには、次の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以外の値を返すことを確認したいでしょう。

8
fearphage