【问题标题】:variable echoing out the last of 3 numbers变量回显 3 个数字中的最后一个
【发布时间】:2014-11-07 16:29:31
【问题描述】:

您好,我目前从网络抓取脚本中得到了一个回显 176 8 58 的输出。我想把这个脚本打包成一个变量,并在网站的其他地方回显。

我已经这样做了

ob_start();
echo $node->nodeValue. "\n";
$thenumbers = ob_get_contents();
ob_end_clean();

但是当我像这样回应它时

现在在网站上,数字是跨度的,并由“/”分隔,我需要做任何花哨的事情吗?我是 PHP 的新手,所以如果它有些愚蠢,请告诉我!

<?php echo $thenumbers ?>

我的输出是 176 8 58

非常感谢您的帮助

(我正在使用的网络抓取脚本必须隐藏我正在抓取的网站,因为它正在开发中)

<?php
$teamlink = rwmb_meta( 'WEBSITE_HIDDEN' );

$arr = array( $teamlink ); 

foreach ($arr as &$value) {
    $file = $DOCUMENT_ROOT. $value;
    $doc = new DOMDocument();
    $doc->loadHTMLFile($file);
    $xpath = new DOMXpath($doc);

    $elements = $xpath->query("//*[contains(@class, 'table')]/tr[3]/td[3]/span");

    if (!is_null($elements)) {
        foreach ($elements as $element) {
            $nodes = $element->childNodes;
            foreach ($nodes as $node) {
                ob_start();
                echo $node->nodeValue. "\n";
                $win_loss = ob_get_contents();
                ob_end_clean();
            }
        }
    }
}
?>

p.s 我知道该脚本可以作为其当前输出的标准文本正常工作。

【问题讨论】:

  • 你有一个额外的},这是复制错误吗?
  • 嗨 Barmar,你在哪里看到这个?
  • NM,因为缩进不好,我没有看到foreach 语句之一。

标签: php web numbers screen-scraping forward


【解决方案1】:

如果我完全误解了您的问题,我深表歉意。

如果你想在数字之间添加一个“/”,你可以:

 echo str_replace(' ','/',$thenumbers);

如果您只想显示最后 3 位数字(清除字符串中的空格),您可以;

 echo substr(str_replace(' ','',$thenumbers),-3);

【讨论】:

  • 除前 3 位数字外,后三位是 -3
  • 哦,是的,感谢您的更正。我更新了我的帖子:)
  • 在使用 echo $node->nodeValue 后,基本上 webscrape 向我输出了数字 176 8 58。 “\n”;。现在的问题是我需要将这些数字包装成一个变量并在其他地方回显它们。所以我试过 ob_start();回显 $node->nodeValue。 "\n"; $thenumbers = ob_get_contents(); ob_end_clean();然后当我回显 $thenumbers 时,我得到的只是数字 58
  • 你不直接赋值给变量吗? $thenumbers .= $node-&gt;nodeValue;
  • 好消息是 Barmar 已经设法让所有的数字都得到回应。我没有 .= 但是现在数字已回显为 176858,我需要在它们之间添加 /
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多