2015-05-24 25 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. 

希望这有助于:)