Для PHP, как читать правильные строки из файла CSV с LF в каком-то текстовом поле CSV?

Входной 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);

);
ВПА ($ линии);

Выход:

Array
(
[0] => 1,"水果apple", "fruit

[1] => \n",300

[2] => 2,"甜點donut", "dessert",200
)

Мой вопрос:
Как я могу прочитать в файле CSV и правильно разделить его на 2 строки CSV, кроме использования Fgetcsv? (примечание: входной файл содержит китайские символы в кодировке BIG5, и fgetcsv испортит эти китайские символы в моей среде PHP 5.2)?

1

Решение

Это не постоянный ответ, но он заботится о моей проблеме:

Поскольку входной файл редактируется под 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.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]