AlexMaxTM
@AlexMaxTM

Как получить value в input используя Zend\Dom\Query?

Пытаюсь получить значение input в следующем коде.
<input name="__RequestVerificationToken" type="hidden" value="cOpkqickNLImH72xbqz" />

Делаю следующим образом
use Zend\Dom\Query;

$dom = new Query($html); // В $html содержится html-файл, с кодом указанным выше
$results = $dom->execute('input[name="__RequestVerificationToken"]');

$count = count($results); // Значение $count равно 1, значит элемент находится успешно
echo $results->current()->nodeName; // Выводит 'input' - хм... 
echo $results->current()->nodeValue; // Выводит пустое значение. Почему?

// Проверим регулярокой
preg_match('/name="__RequestVerificationToken".+?value="([^"]+)"/', $html, $match);
echo $match[1];// Выводит cOpkqickNLImH72xbqz

Как правильно получить значение value в input средствами Zend\Dom\Query?
  • Вопрос задан
  • 161 просмотр
Решения вопроса 1
Stalker_RED
@Stalker_RED
if($results->count()) {
    $value = $results->current()->getAttribute('value');
}


nodeName - название узла, точно так-же как в DOM в браузере

nodeValue - содержимое узла, если оно есть. Точно так-же как в DOM в браузере

Возможно, перед тем как плотно заниматься парсингом, вам не помешало бы освежить базовые знания о DOM.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@AnneSmith
самая ленивая
nodeValue читает именно текст между тэгами типа
<a>Text</a>
а у тэга input такого текста нет

тут или искать как в zend читаются атрибуты тэгов, или отправлять форму и читать значения формы по "name"
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы