初学者需要简单的PHP脚本

时间:2012-12-08 09:57:55

标签: php

我是一个完整的php初学者(这里的第一个'海报'在这里),似乎在一个小脚本中遗漏了一些我正在做的教程。

脚本基本上要做的是从服务器上的托管txt文件中获取Ticker名称,并输出从yahoo finance获取的历史价格。

除了我从getCSVfile函数获取的内容不正确(我从yahoo错误页面获取html)之外,一切似乎都运行正常。但是,获取的URL是正确的,如果我手动输入目标URL,一切正常。

这可能是一个基本错误,但似乎无法找到它。似乎与''和“s”有关。

非常感谢您的帮助 ÿ

<?php 

include("includes/connect.php");

function createURL($ticker){
    $currentMonth = date('n') - 1;
    $currentDay = date('j');
    $currentYear = date('Y');
    $result = 'http://ichart.finance.yahoo.com/table.csv? s='.$ticker.'&a=07&b=19&c=2012&d=11&e=08&f=2012 &g=d&ignore=.csv';
    return (string)$result;
}

function getCSVFile($url, $outputFile){
    $content = file_get_contents($url);
    $content = str_replace('Date,Open,High,Low,Close,Volume,Adj Close','',$content);
    $content = trim($content);
   echo $content; /debugging
  file_put_contents($outputFile,$content);
}

//test debugging - this is where the problem seems to be happening - 
//the URL output is correct as is the getCSVfile but the combination of the two doesnt  work properly//

$test = createURL('GOOG');
echo $test;
getCSVFile($test, "memory.txt");

/code continues...

?>

2 个答案:

答案 0 :(得分:1)

问题是您的网址确实包含一些不属于那里的空格:

$result = 'http://ichart.finance.yahoo.com/table.csv? s='.$ticker.'&a=07&b=19&c=2012&d=11&e=08&f=2012 &g=d&ignore=.csv';
                                                     ^                                               ^

尝试

$result = 'http://ichart.finance.yahoo.com/table.csv?s='.$ticker.'&a=07&b=19&c=2012&d=11&e=08&f=2012&g=d&ignore=.csv';

代替。

要注意这种错误,它始终是在浏览器中复制'n'paste调试输出的最佳方式,而不是输入 - 否则你会经常错过这些小而明显的错误。

答案 1 :(得分:-1)

在createURL函数中返回URL之前尝试使用urlencode。所以该函数的代码就是这样的

function createURL($ticker){
$currentMonth = date('n') - 1;
$currentDay = date('j');
$currentYear = date('Y');
$result = 'http://ichart.finance.yahoo.com/table.csv? s='.$ticker.'&a=07&b=19&c=2012&d=11&e=08&f=2012 &g=d&ignore=.csv';
return urlencode($result);
}