使用DOMDocument检索某些属性

时间:2015-08-09 01:41:49

标签: php domdocument

我正在试图弄清楚如何解析html页面以获取表单操作值,表单选项卡中的标签以及输入字段名称。我看了php.net Domdocument,它告诉我得到一个子节点,但所有这一切都是给我错误,它不存在。我还尝试使用包含html内容的变量的print_r,所有显示我的长度= 1。有人可以向我展示一些我可以使用的样本,因为php.net很容易跟随。

<?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 个答案:

答案 0 :(得分: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