从提取的数据中添加整数

时间:2014-08-26 06:59:29

标签: php html xpath web-scraping domdocument

我有一个从网站中提取整数值的代码。我想知道我是否可以将所有这些整数加起来并显示总和。

<?php
header('Content-Type: text/html; charset=utf-8');
$grep = new DoMDocument();
@$grep->loadHTMLFile("http://www.lelong.com.my/Auc/List/BrowseAll.asp");

$finder = new DomXPath($grep);
$class = "CatLevel1";
$nodes = $finder->query("//*[contains(@class, '$class')]");

foreach ($nodes as $node) {
    $span = $node->childNodes;
    echo str_replace(array('(', ')'), '', $span->item(1)->nodeValue);
    echo '<br/>';
}    
?>

期望的输出: 9768 9321 11407 31611 36506

总计:345664

谢谢!

3 个答案:

答案 0 :(得分:1)

只需将其添加为普通变量即可。在顶部初始化零。例如:

$total = 0;
foreach ($nodes as $node) {
    $span = $node->childNodes;
    $number = preg_replace("/[^0-9]/", '', $span->item(1)->nodeValue);
    echo '<br/>';

    $total += (int) $number;
}

echo "Total: $total";

答案 1 :(得分:0)

您可以简单地将整数分配给变量,并在foreach

的每次迭代中添加它们
$total = 0;
foreach ($nodes as $node) {
    $span = $node->childNodes;
    echo str_replace(array('(', ')'), '', $span->item(1)->nodeValue);
    $total += $span->item(1)->nodeValue;
    echo '<br/>';
}
echo "Total: ".$total;

更新:确保您在$span->item(1)->nodeValue)中获得的内容是整数,而不是字符串。您可以将$total += $span->item(1)->nodeValue;修改为$total += intval($span->item(1)->nodeValue);以转换返回的字符串,例如&#34; 97&#34;到int 97。

答案 2 :(得分:0)

看起来你的代码完成了你想要做的90%,并且相比之下添加整数应该相对简单。

假设这部分正在返回你的整数:

foreach ($nodes as $node) {
    $span = $node->childNodes;
    echo str_replace(array('(', ')'), '', $span->item(1)->nodeValue);
    echo '<br/>';
} 

将其更改为:

$total = 0;
foreach ($nodes as $node) {
    $span = $node->childNodes;
    $integer = str_replace(array('(', ')'), '', $span->item(1)->nodeValue);
    $total += $integer;
    echo "$integer<br/>";
} 
echo "Total: $total";