对于PHP,如何在某些CSV文本字段中使用LF读取CSV文件中的正确行?

时间:2015-10-07 16:37:21

标签: php csv linefeed

输入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环境中弄乱那些汉字)?

1 个答案:

答案 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程序。