我只是想将这个文本从csv file导入到解析它的laravel php脚本中:
store_id,ref,priority,tagline
10,confuscian,5,confuscian says
当我在Chrome上的mac机器上发送它时,csv的主体显示如下:
因此您可以看到添加了\n
:
{"csv":"store_id,ref,priority,tagline\n10,confuscian,5,confuscian says"}
然而,当我从windows添加相同的csv时,它看起来像是这样:
{"csv":"store_id,ref,priority,tagline 10,confuscian,5,confuscian says"}
读取此内容的脚本过滤掉\r\n
different OS problem,如下所示:
$file = storage_path('batch_update.csv');
// replace new line characters for mac/win/linux
$str = preg_replace('/(\r\n|\r|\n)+/', "\n", $this->data);
file_put_contents($file, $str);
$this->data = $this->csvToArray($file);
if (!$this->data || !$this->checkForRequiredColumns()) {
return false;
}
问题是在Windows中,\n
甚至都没有显示出来!这会混淆csvToArray脚本:
特质CsvHelpers { 私有函数csvToArray($ filename) { if(!file_exists($ filename)||!is_readable($ filename)){ 返回false; }
$header = null;
$data = array();
if (($handle = fopen($filename, 'r')) !== false) {
while (($row = fgetcsv($handle, 1000, ',')) !== false) {
$row = array_map('trim', $row);
if (!$header) {
$header = $row;
} else {
$data[] = array_combine($header, $row);
}
}
fclose($handle);
}
return $data;
}
我如何制作它以便当我在Windows中导出csv时,每一行都以\n
结尾?