3

私はphpの完全な初心者であり(そしてここSOの最初の「ポスター」)、チュートリアルから行っている小さなスクリプトに何かが欠けているようです。

スクリプトが基本的に行うことは、サーバー上のホストされたtxtファイルからティッカー名を取得し、yahoofinanceから取得した過去の価格を出力することです。

getCSVfile関数から取得したコンテンツが正しくないことを除いて、すべてが正常に機能しているようです(yahooエラーページからhtmlを取得します)。ただし、フェッチされたURLは正しいので、ターゲットURLを手動で入力すると、すべてが正常に機能します。

それはおそらく基本的な間違いですが、それを見つけることができないようです。''と""に関連しているようです。

助けてくれてありがとうY

<?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...

?>
4

2 に答える 2

1

問題は、URL に含まれていないスペースがいくつか含まれていることです。

$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';

代わりは。

この種のエラーに気付くには、デバッグ出力をブラウザに入力するのではなく、コピー アンド ペーストするのが常に最善の方法です。そうしないと、これらの小さな明らかなエラーを見逃すことがよくあります。

于 2012-12-08T10:07:56.520 に答える
-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);
}
于 2012-12-08T10:03:55.207 に答える