【发布时间】:2016-02-01 15:26:13
【问题描述】:
我有这个 html 结构:
<html>
<body>
<section>
<div>
<div>
<section>
<div>
<table>
<tbody>
<tr></tr>
<tr>
<td></td>
<td></td>
<td>
<i></i>
<div class="first-div class-one">
<div class="second-div"> soft </div>
130 cm / 15cm
</div>
</td>
</tr>
<tr></tr>
</tbody>
</table>
</div>
</section>
</div>
</div>
</section>
</body>
</html>
现在,我有了这个 XPath 代码:
$doc = new DOMDocument();
@$doc->loadHtmlFile('http://www.whatever.com');
$doc->preserveWhiteSpace = false;
$xpath = new DOMXPath( $doc );
$nodelist = $xpath->query( '/html/body/section/div[2]/section/div/table/tbody/tr[2]/td[3]/div' );
foreach ( $nodelist as $node ) {
$result = $node->nodeValue."\n";
}
结果,我得到了“柔软的 130 厘米/15 厘米”。
但我想知道如何只得到“15”,所以我需要:
1.要知道如何摆脱childNode->nodeValue
2。一旦我有了“130 cm / 15cm”,就知道如何只获取“15”作为 PHP 中变量的 nodeValue。
你们能帮忙吗? 提前致谢
【问题讨论】:
-
nodeValue只是一个文本字符串。一旦你有了那个字符串,DOM 的工作就完成了——你需要使用标准的 PHP 字符串操作(例如 substr)来操作它,然后将修改后的字符串塞回 DOM。 -
是的,这就是为什么标题说'php with dom xpath'。如果我只想得到“130”,我知道该怎么做,但如果我只想要“15”,我就不知道了。此外,我需要的第一件事是要删除子 div 的值 'soft',这是一个 dom xpath 的东西。此外,围绕“15”的子字符串可能会在我正在使用的真实 html 代码中发生变化。
-
我告诉你你有你的
130 cm /15cm字符串,现在必须使用标准的php字符串操作来进一步分解它。这意味着从技术上讲,您的问题与 dom 无关。 dom 完成了它的工作,现在你需要其他工具。 -
我还没有'130 cm /15cm'。我有“柔软的 130 厘米/15 厘米”。请阅读原始问题。
-
@MarcB,我想你还没有读到有一个值为“软”的子 div。这是我问题的第一部分。