我正在试图弄清楚如何解析html页面以获取表单操作值,表单选项卡中的标签以及输入字段名称。我看了php.net Domdocument,它告诉我得到一个子节点,但所有这一切都是给我错误,它不存在。我还尝试使用包含html内容的变量的print_r,所有显示我的长度= 1。有人可以向我展示一些我可以使用的样本,因为php.net很容易跟随。
<?php
$content = "some-html-source";
$content = preg_replace("/&(?!(?:apos|quot|[gl]t|amp);|#)/", '&', $content);
$dom = new DOMDocument;
$dom->preserveWhiteSpace = FALSE;
$dom->loadHTML($content);
$form = $dom->getElementsByTagName('form');
print_r($form);
答案 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。