XPath получить значение атрибута в PHP

Возможный дубликат:
Как извлечь атрибут узла из XML с помощью PHP 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 ответа

Решение

XPath может сделать работу по получению атрибута значения с $xpath->query("//input[@name='text1']/@value");, Затем вы можете перебрать список узлов узлов атрибутов и получить доступ к $value свойство каждого узла атрибута.

Посмотрите этот метод DOM http://www.php.net/manual/en/domelement.getattribute.php

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

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

}

Я не знаком с синтаксисом PHP для этого, но чтобы выбрать атрибут value, вы должны использовать следующий xpath:

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

Однако xpath не возвращает строки, он возвращает узлы. Вы хотите value узла, поэтому, если PHP следует соглашению, этот код будет:

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

В целях обучения имейте в виду, что вы всегда проверяете value имущество. Так что, если вы хотите имя того же элемента, вы бы использовали:

 $xpath->query("//input[@name]/@name")->value;

Возможно, вы хотели бы убедиться, что запрос возвращает ненулевое значение, прежде чем запрашивать value собственность также.

Другие вопросы по тегам