根据背景使用xpath获取数据

时间:2014-08-29 02:09:16

标签: php html xpath domdocument

我是list我希望value(innertext)使用td

获得xpath <td align="center" valign="middle" height="14" width="14" background="/images/arrows/green1.gif" class="MENU_month2"><span class="CALENDAR_CELL">13</span></td>
13

我想使用xPath

从上面的代码中获取值$elements = $xpath->query('//td[contains(@background, "/images/arrows/green1.gif")]'); echo trim(strip_tags($functions->GetHTMLFromDom($elements)));

到目前为止,我已经尝试了这一点,但一无所获

functions class

并在 public function GetHTMLFromDom($domNodeList){ $domDocument = new DOMDocument(); foreach ($domNodeList as $node) { $domDocument->appendChild($domDocument->importNode($node, true)); $domDocument->appendChild($domDocument->createTextNode(" ")); } return $domDocument->saveHTML(); } 里面我有这个功能

background

我希望仅在{{1}}的基础上获得此值。

感谢。

2 个答案:

答案 0 :(得分:2)

如果它包含多个<td>,请尝试循环播放。例如:

$elements = $xpath->query('//td[contains(@background, "/images/arrows/green1.gif")]');
if($elements->length > 0) {
    // if it exists
    foreach($elements as $td) { // then foreach td
        // get the node value of inside the span
        echo $xpath->query('./span', $td)->item(0)->nodeValue; // 13
    }

}

答案 1 :(得分:2)

我只做的更改是将/span添加到查询中,例如

$elements = $xpath->query('//td[contains(@background, "/images/arrows/green1.gif")]/span');

foreach ($elements as $span) {
    echo $span->nodeValue, PHP_EOL;
}

在这里演示〜https://eval.in/185108

更新

鉴于你的代码编辑,这就是你要追求的吗?

$elements = $xpath->query('//td[contains(@background, "/images/arrows/green1.gif")]/span/text()');

在这里,我直接在XPath查询中直接在<span>中选择<td>的文本内容。

使用大量<td>个节点〜https://eval.in/185113

进行演示