使用 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);|#)/", '&', $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。
我正在尝试弄清楚如何解析 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);
我建议使用 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。