【问题标题】:PHP - getting stock quotes onlinePHP - 在线获取股票报价
【发布时间】:2018-02-16 18:35:45
【问题描述】:

我有一个 php 文件,其中我试图获取在线数据/股票报价,我想在 html 表格中逐行打印 这是我的代码:

{
    $url = 'http://download.finance.yahoo.com/d/quotes.csv?
    s=^AORD+BHP.AX+BLT.L+AAPL&f=nd1l1';
    $data = file_get_contents($url);

    echo $data;
}

输出是: "ALL ORDINARIES","9/7/2017",5753.80 "BHP BLT FPO","9/7/2017",27.33 "BHP BILLITON PLC ORD $0.50","9/7/2017",1457.50 "Apple Inc. ","9/7/2017",161.26

我想要的是这样的:

"ALL ORDINARIES","9/7/2017",5753.80
"BHP BLT FPO","9/7/2017",27.33
"BHP BILLITON PLC ORD $0.50","9/7/2017",1457.50
"Apple Inc.","9/7/2017",161.26

我尝试过:

echo $data[1];

但结果是: “一个”

我应该如何处理这个问题?谢谢!

【问题讨论】:

    标签: php arrays json stocks asx


    【解决方案1】:

    $data 是一个字符串,而不是一个数组。使用nl2br()将数据中的换行符转换为HTML<br>标签:

    echo nl2br($data);
    

    或将其打印在<pre> 块中,以表明数据已格式化,不应被浏览器包装。

    echo '<pre>' . $data . '</pre>';
    

    【讨论】:

    • 两种解决方案都有效!谢谢。另一个问题是,如果我想在循环中将每一行分配到一个数组中,并且对于每一行,我还想在另一个循环中分配它。例如 { $arr[0] = "ALL ORDINARIES","9/7/2017",5753.80 , $arr[1] = "BHP BLT FPO","9/7/2017",27.33 } 等等。然后对于 $arr[0] 的内容,我想使用循环在数组中分配。我该怎么做?
    • 使用explode() 将其拆分为行数组。或者使用file() 函数而不是file_get_contents(),因为它会自动将其拆分为一个数组。
    • 目前我就是这样做的。我认为就像硬编码一样 { $line = file_get_contents($url); $data = nl2br($line); $company = explode("\n", $data); $a = explode(",", $company[0]); $b = explode(",", $company[1]); $c = explode(",", $company[2]); $d = explode(",", $company[3]); }
    • 如果要将其转换为数组,则无需先使用nl2br()
    • 使用foreach() 循环而不是分配变量。
    【解决方案2】:

    目前,$data 是一个字符串,它为整个字符串提供$data[0] == '"'; $data[1] == 'A'; $data[2] == 'L', $data[3] == 'L' ...

    由于您正在拉取csv 文件,$data = str_getcsv($data) 会将包含在$data 中的字符串转换为数组。见http://php.net/manual/en/function.str-getcsv.php

    【讨论】:

    • str_getcsv() 仅适用于单行,而不适用于整个 CSV 文件。
    • 那会教我阅读文档。按行尾拆分文件,然后通过str_getcsv. 运行它
    猜你喜欢
    • 1970-01-01
    • 2020-10-02
    • 1970-01-01
    • 2011-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-23
    • 1970-01-01
    相关资源
    最近更新 更多