Yahoo 有一个财务 api,允许个人获取当前和历史股票信息。他们有多种检索此信息的方法,其中一种是使用 Yahoo 查询语言,另一种是直接下载/阅读他们的 .csv(逗号分隔文件)文件。
我找到了一个非常有用的脚本,用于通过 php 读取 csv 文件。但是,我似乎只获得了 csv 文件的前 9,000 个字符左右。我试过调整文件大小但无济于事,我想知道我到底在哪里受到限制,是否有办法解决这个问题。
是php给我封顶了,还是yahoo给我封顶了(好像不太可能),还是说只能通过http协议(protocol)传递这么多信息?我欢迎任何有根据的评论,并非常感谢任何建设性的批评。我的代码如下:
<?php
// Setup Variables
$requestUrl = "http://ichart.yahoo.com/table.csv?s=GOOG&a=0&b=1&c=2000&d=0&e=31";
// Pull data (download CSV as file)
$filesize=1000000;
$handle = fopen($requestUrl, "r");
$raw = fread($handle, $filesize);
fclose($handle);
echo $raw; //error checking, turns out the $raw is only about 8000 characters long
// Split results, trim way the extra line break at the end
$quotes = explode("\n",trim($raw));
foreach($quotes as $quoteraw) {
$quoteraw = str_replace(", I", " I", $quoteraw);
$quote = explode(",", $quoteraw);
echo $quote[0]."
"; // output the first element of the array, the Company Name
}
?>
编辑:将对所有建设性建议投赞成票,非常感谢 :))。
最佳答案
因为它是 csv 文件,所以使用 fgetcsv相反。
来自 php.net 的示例代码:
<?php
$row = 1;
if (($handle = fopen("test.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$num = count($data);
echo "<p> $num fields in line $row: <br /></p>\n";
$row++;
for ($c=0; $c < $num; $c++) {
echo $data[$c] . "<br />\n";
}
}
fclose($handle);
}
?>
关于php - 在 php 中读取在线 .csv 文件时遇到问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17515546/