【问题标题】:select input type text values inside a div using domXpath使用 domXpath 在 div 中选择输入类型文本值
【发布时间】:2018-07-02 18:00:18
【问题描述】:

我正在尝试使用 domXpath 访问 DIV 内的文本框的值。

基本上,我有多个 DIV,每个 DIV 都包含一些输入类型的文本,并且其中包含一些值。

我想创建一个数组并将其与其父 DIV 映射

我的示例 HTML 代码:

<div class="div_common_class">
    <div class="content_area">
        <div class="field_name">this is first</div>
    </div>

    <div class="input_area">
        <input type="text" name="" value="111" />
    </div>
</div>

<div class="div_common_class">
    <div class="content_area">
        <div class="field_name">this is second</div>
    </div>

    <div class="input_area">
        <input type="text" name="" value="222" />
    </div>
</div>

PHP 代码:

$dom = new DomDocument;
@$dom->loadHTML($html);

$xpath = new DOMXpath($dom);
$result = $xpath->query('//div[contains(@class, "div_common_class")]');

从上面的 PHP 代码中,我只得到了 DIV 的值,但没有得到输入类型文本的值。

并输出如下内容:

这是第一个 111

这是第二个 222

【问题讨论】:

    标签: php dom domdocument domxpath


    【解决方案1】:

    您的 xpath 获取了正确的 div,但您仍然需要获取值。

    您可以使用getElementsByTagName 并使用foreach 或通过item 获取元素,如下例所示:

    $results = $xpath->query('//div[contains(@class, "div_common_class")]');
    foreach ($results as $result) {
        echo sprintf("<b>%s %s</b><br>",
            $result->getElementsByTagName("div")->item(1)->textContent,
            $result->getElementsByTagName("input")->item(0)->getAttribute("value"));
    }
    

    这会给你:

    这是第一个 111

    这是第二个 222

    Output php

    【讨论】:

      最近更新 更多