2015-08-09 3 views
1

Я пытаюсь выяснить, как разделить страницу html, чтобы получить значение формы, метки на вкладке формы, а также имена полей ввода. Я посмотрел на php.net Domdocument, и он говорит мне, чтобы получить дочерний узел, но все, что он делает, - это дать мне ошибки, которых он не существует. Я также попытался сделать print_r переменной, содержащей содержимое html, и все, что показывает мне, - length = 1. Может кто-нибудь показать мне несколько образцов, которые я могу использовать, потому что php.net сбивает с толку.Получение определенных атрибутов с использованием DOMDocument

<?php 

$content = "some-html-source"; 
$content = preg_replace("/&(?!(?:apos|quot|[gl]t|amp);|#)/", '&amp;', $content); 

$dom = new DOMDocument; 
$dom->preserveWhiteSpace = FALSE; 
$dom->loadHTML($content); 

$form = $dom->getElementsByTagName('form'); 

print_r($form); 

ответ

1

Я предлагаю использовать DomXPath вместо getElementsByTagName, поскольку она позволяет выбирать значения атрибутов непосредственно и возвращает DOMNodeList объект так же, как getElementsByTagName. @ в @action указывает, что мы выбираем по атрибуту.

$doc = new DOMDocument(); 
$doc->loadHTML($content); 
$xpath = new DomXPath($doc); 
$action = $xpath->query('//form/@action')->item(0); 
var_dump($action); 

Точно так же, чтобы получить первую input

$action = $xpath->query('//form/input')->item(0); 

Чтобы получить все input поля

for($i=0;$i<$xpath->query('//form/input')->length;$i++) { 
    $label = $xpath->query('//form/input')->item($i); 
    var_dump($label);  
} 

Если вы не знакомы с XPath, я рекомендую просмотра these examples.

+0

спасибо, я просто смотрел на domxpath(), что делает // в запросе? –

+0

// просматривает весь документ – FuzzyTree

+0

получил это спасибо, один вопрос о mroe, если вы не возражаете. Путь xpath с использованием firebug в форме, которую я использую, выглядит так:/html/body/div/div/form/div [2]/input. как я могу ссылаться на div [#] в запросе? –

 Смежные вопросы

  • Нет связанных вопросов^_^