对于 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.
输入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.