保留 csv 数据的换行符
keep line breaks of csv datas
我正在使用 kirby cms 和一些 php 从 csv 文件的数据生成文本文件。
在我的 csv 文件的数据中,有几段文本换行符。
我需要将这些换行符保留在生成的文本文件中。
这是代码
<?php
function csv(string $file, string $delimiter = ','): array{
$lines = file($file);
$lines[0] = str_replace("\xEF\xBB\xBF", '', $lines[0]);
$csv = array_map(function($d) use($delimiter) {
return str_getcsv($d, $delimiter);
}, $lines);
array_walk($csv, function(&$a) use ($csv) {
$a = array_combine($csv[0], $a);
});
array_shift($csv);
return $csv;
}
我正在尝试弄清楚如何将这些换行符保留在文本文件中。
谢谢 !
不要使用 file()
,因为它不知道某些换行符在 CSV 记录内部,不应该用于拆分数据。
使用带有 fgetcsv()
的循环,它会正确解析文件,假设正确引用了带有换行符的字段。
$fh = fopen($file);
$header_line = fgets($fh);
$header_line = str_replace("\xEF\xBB\xBF", '', $header_line);
$keys = str_getcsv($header_line);
$csv = [];
while ($row = fgetcsv($fh, $delimiter)) {
$csv[] = array_combine($keys, $row);
}
我正在使用 kirby cms 和一些 php 从 csv 文件的数据生成文本文件。
在我的 csv 文件的数据中,有几段文本换行符。 我需要将这些换行符保留在生成的文本文件中。
这是代码
<?php
function csv(string $file, string $delimiter = ','): array{
$lines = file($file);
$lines[0] = str_replace("\xEF\xBB\xBF", '', $lines[0]);
$csv = array_map(function($d) use($delimiter) {
return str_getcsv($d, $delimiter);
}, $lines);
array_walk($csv, function(&$a) use ($csv) {
$a = array_combine($csv[0], $a);
});
array_shift($csv);
return $csv;
}
我正在尝试弄清楚如何将这些换行符保留在文本文件中。 谢谢 !
不要使用 file()
,因为它不知道某些换行符在 CSV 记录内部,不应该用于拆分数据。
使用带有 fgetcsv()
的循环,它会正确解析文件,假设正确引用了带有换行符的字段。
$fh = fopen($file);
$header_line = fgets($fh);
$header_line = str_replace("\xEF\xBB\xBF", '', $header_line);
$keys = str_getcsv($header_line);
$csv = [];
while ($row = fgetcsv($fh, $delimiter)) {
$csv[] = array_combine($keys, $row);
}