XPath 结果为 PHP 中的命名键数组

DAD*_*ADU 1 php xpath dom

用 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)

如何获得命名键而不是编号键?

irc*_*ell 5

PHP 中的 Dom 解析与 JS 相同,因为它们使用相同的接口(标准文档对象模型)......唯一的区别是在 JS 中很容易内省单个元素(而在 PHP 中它保持在 API 之下,因为它是在 C) 中实现。

现在,对于您的确切问题,返回类型$valueDomAttr。所以这应该为你做:

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)