输入csv文件(注意:水果后面有一个不可打印的LF字符\ n):
1,"apple", "水果fruit\n",300
2,"donut", "甜點dessert",200
我的PHP程序:
function wpa(&$arr) { echo nl2br(print_r($arr, true)); }
header("Content-Type:text/html; charset=utf-8");
$lines = file("test.csv", FILE_IGNORE_NEW_LINES);
); WPA($线);
输出:
Array
(
[0] => 1,"水果apple", "fruit
[1] => \n",300
[2] => 2,"甜點donut", "dessert",200
)
我的问题:
如何读取csv文件并将其正确拆分为2个csv行,而不是使用fgetcsv?(注意:输入文件有BIG5编码中文字符和fgetcsv会在我的PHP 5.2环境中弄乱那些汉字)?
答案 0 :(得分:0)
这不是一个永久的答案,但它会照顾我的问题:
由于在Windows下编辑了输入文件,我编写了以下代码段:
$data = file_get_contents("test.csv");
$lines = explode(PHP_EOL, $data); // or replace PHP_EOL with" \r\n"
echo nl2br(print_r($lines,true));
// parse with regular expression for each element in lines
输出正确的2 csv线。但是如果输入文件太大而无法一次读入,我就不知道答案,因为line(),fgets(),. etc和其他读文本文件函数都将LF视为换行符,即使你在Windows下运行PHP程序。