Duplicata possible:
Comment extraire un attribut de nœud à partir de XML en utilisant l'analyseur DOM de PHP
Comment extraire une valeur de balise 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']");
Comment puis-je faire en sorte que value
soit "besoin d'obtenir ceci"?
Mise à jour:
Je l'ai fait fonctionner et j'espère que cela aidera aussi les autres. Après le code ci-dessus, j'ai obtenu la valeur par:
echo $filtered->item(0)->getAttribute('value');
XPath peut faire le travail d'obtention de l'attribut value avec $xpath->query("//input[@name='text1']/@value");
. Ensuite, vous pouvez parcourir la liste des nœuds de nœuds d'attributs et accéder à $value
propriété de chaque nœud d'attribut.
Regardez cette méthode de DOM http://www.php.net/manual/en/domelement.getattribute.php
var array_result = arrray();
foreach (filtered as $key => $value){
$array_result[] = $value->getAttribute('ID');
}
Je ne connais pas la syntaxe PHP pour cela, mais pour sélectionner l'attribut value, vous utiliseriez le xpath suivant:
//input[@name='text1']/@value
Cependant, xpath ne renvoie pas de chaînes, il renvoie des nœuds. Vous voulez le nodeValue
du nœud, donc si PHP suit la convention, ce code serait:
$xpath->query("//input[@name='text1']/@value")->item(0).nodeValue;
À des fins d'apprentissage, gardez à l'esprit que vous vérifiez toujours la propriété nodeValue
. Donc, si vous vouliez le nom du même élément, vous utiliseriez:
$xpath->query("//input[@name]/@name")->item(0).nodeValue;
Vous souhaitez probablement vous assurer que la requête renvoie une valeur non nulle avant d'interroger également la propriété nodeValue
.