使用 DOMDocument 检索某些属性

retrieving certain attributes using 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);

我建议使用 DomXPath 而不是 getElementsByTagName,因为它允许您直接 select 属性值和 returns 一个 DOMNodeList 对象,就像 getElementsByTagName@action 中的 @ 表示我们正在按属性 selecting。

$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