我有一个超级简单的 CSV 文件(大约 500 行,14.5k),我需要将它放入一个数组中,稍后我需要根据其他数据集检查 ID 列。
CSV 是这样的:
id,mail,Plan
102,,Plan_Pay
1028,,Plan_Pay
1031,,Plan_Prom
1032,,Plan_Pay
1033,,Plan_Pay
1034,xxxxxx@gmail.com,Plan_Free
1035,xxxxxx@gmail.com,Plan_Free
1036,xxxxxx@gmail.com,Plan_Pay
1079,,Plan_Prom
109,,Plan_Pay
1166,xxxxxx@elid.com,Plan_Prom
12,xxxxxx@gmail.com,Plan_Pay
....
....
(on and on .. about 500 lines)
但无论如何我尝试解析它,我得到一个空数组。
我尝试使用parsecsv lib
$csvf = 'id2.csv';
echo $csvf; // debug verify that path exists
$csv = new parseCSV();
$csv->auto($csvf);
print_r($csv->data);// results empty
以及变体
$csv = new parseCSV('id2.csv');
print_r($csv->data);// results empty
我也试过(来自 php.net):
if ( !function_exists('fgetcsv') ) echo 'Server too old ... we need to check.';// but it is ok
function csv_to_array($filename, $delimiter=',')
{
if(!file_exists($filename) || !is_readable($filename)){
$data = array();
$data[] = 'no file'; // debug -verify there is file..
// echo 'no file'; // debug -verify there is file..
// return FALSE;
}
$header = NULL;
$data = array();
if (($handle = fopen($filename, 'r')) !== FALSE)
{
while (($row = fgetcsv($handle, 1000, $delimiter)) !== FALSE)
{
if(!$header)
$header = $row;
else
$data[] = array_combine($header, $row);
}
fclose($handle);
}
return $data;
}
$csv = csv_to_array($csvf);
echo $csvf; // debug verify correct path
print_r($csv);// results empty
我尝试了所有路径组合,相对("id2.csv"
),绝对("http://path.to/id2.csv"
)等,但结果都是一样的。
我的问题是:文件本身有问题吗?*.CSV 就是这么简单的格式,我有一个很小的文件(大约 500 行)。可能是编码问题(它是没有bom的UTF-8)。或者可能是服务器问题?还是我只是做错了?(到目前为止,任何地方都没有可见的错误)