用 PHP 解析 Dom 很痛苦。当然,如果您看看使用 JavaScript 是多么容易。
这就是我从每个输入元素获取所有属性的方式:
$dom = new DOMDocument();
$dom->loadHTML('<form><input type="text" required /><input type="password" name="password" required /></form>');
$xpath = new DOMXPath($dom);
$result = $xpath->query('//input/@*');
foreach($result as $key=>$value) {
echo $key . ': ' . $value->nodeValue . '<br />';
}
Run Code Online (Sandbox Code Playgroud)
如何获得命名键而不是编号键?
PHP 中的 Dom 解析与 JS 相同,因为它们使用相同的接口(标准文档对象模型)......唯一的区别是在 JS 中很容易内省单个元素(而在 PHP 中它保持在 API 之下,因为它是在 C) 中实现。
现在,对于您的确切问题,返回类型$value是DomAttr。所以这应该为你做:
echo $value->name . ': ' . $value->value . '<br />';
Run Code Online (Sandbox Code Playgroud)
编辑:关于您的评论。这样做:
$result = $xpath->query('//input');
$inputs = array();
foreach($result as $element) {
$current = array();
foreach ($element->attributes as $attribute) {
$current[$attribute->name] = $attribute->value;
}
$inputs[] = $current;
}
Run Code Online (Sandbox Code Playgroud)