0

CSV を取り込み、返された文字列を新しい行に基づいて分解したいと考えています。

$quotes = file_get_contents('http://ca.finance.yahoo.com/d/quotes.csv?s=CLQ12.NYM+NGQ12.NYM+GCQ12.CMX+SIN12.CMX+HGN12.CMX+^DJI+^GSPC+^GSPTSE+^SPCDNX+X&f=nsc1');

私に与えます:

"Crude Oil Aug 12","CLQ12.NYM",-3.10
"Natural Gas Aug 1","NGQ12.NYM",-0.165
"Gold Aug 12","GCQ12.CMX",-28.40
"Silver Jul 12","SIN12.CMX",-0.698
"Copper Jul 12","HGN12.CMX",-0.079
"S&P 500","^GSPC",-13.20
"S&P/TSX Composite","^GSPTSE",-156.71
"S&P/TSX Venture C","^SPCDNX",-18.29
"United States Ste","X",-0.37

ただし、使用 $quotes = explode('\n', $quotes);しても何も起こりません。すべての行の配列を返す最も簡単な方法は何ですか?

4

3 に答える 3

8

二重引用符が必要です。そうしないと、PHP はエスケープ シーケンスを解析しません。

$quotes = explode("\n", $quotes);

file()行の配列を返すために使用することもできます。

$array = file( 'http://ca.finance.yahoo.com/d/quotes.csv?s=CLQ12.NYM+NGQ12.NYM+GCQ12.CMX+SIN12.CMX+HGN12.CMX+^DJI+^GSPC+^GSPTSE+^SPCDNX+X&f=nsc1');

ただし、PHP に組み込まれている CSV 関数 ( fgetcsv().

于 2012-07-06T19:41:37.920 に答える
1

fgetcsvの使用を検討することをお勧めします。

行ごとに配列として取得します。

http://php.net/manual/en/function.fgetcsv.php

于 2012-07-06T19:48:25.997 に答える
0

OS 間の互換性のために PHP_EOL を使用したいと思います。

<?php
$quotes = file_get_contents('http://ca.finance.yahoo.com/d/quotes.csv?s=CLQ12.NYM+NGQ12.NYM+GCQ12.CMX+SIN12.CMX+HGN12.CMX+^DJI+^GSPC+^GSPTSE+^SPCDNX+X&f=nsc1');
$lines = explode(PHP_EOL, $quotes);
?> 
于 2012-07-06T21:55:24.140 に答える