我正在尝试从17track.net获取数据,我的意思是当我跟踪数字时,我在结果框中得到了结果,但我无法在我的文件中显示它。
这是我的代码:
<?php
//RA190265307CN is the tracking number
$result = array();
$classname = "tb-stat";
$domdocument = new DOMDocument();
$domdocument->loadHTMLFile('http://www.17track.net/en/result/post.shtml?nums=RA190265307CN');
$a = new DOMXPath($domdocument);
$spans = $a->query("//*[contains(concat(' ', normalize-space(@class), ' '), ' $classname ')]");
for ($i = $spans->length - 1; $i > -1; $i--) {
$result[] = $spans->item($i)->firstChild->nodeValue;
}
echo "<pre>";
print_r($result); ?>
这就是数组的结果:
Array
(
[0] =>
)
我的代码有什么问题?我正在尝试获取跟踪号码的“状态”。
答案 0 :(得分:0)
firstChild
会选择一个空的子<colgroup>
。
我想你要替换
$result[] = $spans->item($i)->firstChild->nodeValue;
通过
$result[] = $spans->item($i)->nodeValue;
目前返回
Not Found(0) / Transporting(0) / Pick Up(0) / Delivered(0)
如果您希望进一步深入此字符串,可以利用状态值"(0)"
在<em>
标记中进行支撑的事实。因此,例如将您的XPATH表达式更改为
$query = "//*[contains(concat(' ', normalize-space(@class), ' '), ' $classname ')]//em";
将选择个人状态并将其放入数组result
。使用索引0..3
,您将能够随机访问状态。如果你想拥有一个数值,你仍然需要从字符串中提取它。