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

For PHP, how to read in correct lines from CSV file with LF in some CSV text field?

输入csv文件(注意:fruit后有不可打印的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
)

我的问题:
除了使用 fgetcsv 之外,我如何读取 csv 文件并将其正确拆分为 2 个 csv 行?注意:输入文件包含 BIG5 编码的汉字,fgetcsv 会在我的 PHP 5.2 环境)?

中弄乱这些汉字

这不是一个永久的答案,但它解决了我的问题:

由于输入文件是在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 视为换行符,即使你 运行 PHP 下的程序 Windows.