【发布时间】:2016-01-19 04:07:40
【问题描述】:
我知道这可能在其他线程中有所涉及,但我一直在 StackOverflow 上搜索并尝试了许多解决方案,这就是我问的原因。
有了这个 html:
<div class="someclass">
<table>
<tbody>
<tr>
<th class="state">Status</th>
<th class="name">Name</th>
<th class="type">Type</th>
<th class="length">Length</th>
<th class="height">Height</th>
</tr>
<tr>
<td class="state state2"></td>
<td class="name"></td>
<td class="type t18"></td>
<td class="length">2000 m</td>
<td class="height"></td>
</tr>
<tr>
<td class="state state1"></td>
<td class="name"></td>
<td class="type t18"></td>
<td class="length">2250 m</td>
<td class="height"></td>
</tr>
<tr>
<td class="state state1"></td>
<td class="name"></td>
<td class="type t18"></td>
<td class="length">3000 m</td>
<td class="height"></td>
</tr>
<tr>
<td class="state state2"></td>
<td class="name"></td>
<td class="type t18"></td>
<td class="length">2250 m</td>
<td class="height"></td>
</tr>
</tbody>
</table>
</div>
现在,这是我目前的 PHP 代码:
$dom = new DOMDocument();
$dom->loadHtmlFile('http://www.whatever.com');
$dom->preserveWhiteSpace = false;
$xp = new DOMXPath($dom);
$col = $xp->query('//td[contains(@class, "state1") and (contains(@class, "state"))]');
$length = 0;
foreach( $col as $n ) {
$parent = $n->parentNode;
$length += $parent->childNodes->item(3)->nodeValue;
}
echo 'Length: ' . $length;
我需要:
1.- 对“长度”值求和以便我可以回显它们,摆脱给定值的“m”子字符串。
2.- 了解为什么我在“parentNodes”、“childNodes”和“item()”部分出错。经过多次尝试,我得到了“长度:0”
我知道这不是获得完整详细解释的地方,但是很难找到针对这些具体问题的教程。如果有人能就我在哪里可以获得这些信息提供一些建议,那就太好了。
非常感谢。
为简单起见编辑了“Concat”部分。
【问题讨论】:
-
您在执行查询的那一行有语法错误。
-
谢谢,你能告诉我那个语法错误是什么吗?看不到。
-
您没有在 concat 函数中转义
'。 -
对不起@Musa,这里显然是初学者......我仍然没有看到错误。
-
在 concat 内你有
' ',要在单引号字符串中使用单引号,你必须用 \(斜杠)转义它