2015-05-24 56 views
1

解析這個跨域csv文件到數組的最佳方式是什麼?如何使用php解析這個csv到數組中

示例數據:

2015-03-26 01:00;  1,428; 39,513 
2015-03-26 02:00;  1,425; 39,294 
2015-03-26 03:00;  1,422; 39,076 
2015-03-26 04:00;  1,421; 39,004 
2015-03-26 05:00;  1,416; 38,642 
2015-03-26 06:00;  1,416; 38,642 
2015-03-26 07:00;  1,416; 38,642 
2015-03-26 08:00;  1,416; 38,642 

我想是這樣的:

$file = fopen("http://somedomain.com/data.csv", "r"); 
while (($buffer = fgets($file)) !== false) { 
    $fields = explode(";", $buffer);  
    print_r(fgetcsv($file)); 
    }  
fclose($file); 

但它仍然在逗號,分號不拆分數據。我會很樂意提供任何建議!

+0

看一看在[文件](http://php.net/fgetcsv),您需要傳遞第三個參數';'以使其通過分號分割。 –

+0

其實你的代碼工作正常。添加'print_r($ fields)',你會看到在你指定的分隔符處分割的實際結果。 – billynoah

+0

僅供參考:您可以接受最能幫助您的答案並解決您的問題(http://meta.stackexchange.com/q/5234)。 – Rizier123

回答

2

只需使用fgetcsv(),指定';'作爲第三個參數中的分隔符。例如:

$fh = fopen('data.csv', 'r'); 

while (false !== ($row = fgetcsv($fh, 1000, ';'))) { 
    print_r($row); 
} 

產量:

Array 
(
    [0] => 2015-03-26 01:00 
    [1] =>  1,428 
    [2] =>  39,513 
) 
Array 
(
    [0] => 2015-03-26 02:00 
    [1] =>  1,425 
    [2] =>  39,294 
) 
Array 
(
    [0] => 2015-03-26 03:00 
    [1] =>  1,422 
    [2] =>  39,076 
) 
// etc. 

希望這有助於:)