在CSV PHP中如何转义换行符

3
我有一个.csv模板,希望人们填写、保存并上传它。
问题在于,假设一些用户在一行中插入了隐藏的换行符,当使用fgetcsv()时,它会输出被隐藏的换行符所分隔的行。
如何转义换行符或净化数据?
可能的解决方案:
假设第一行是正确的,$count = 计算分隔符数量直到换行符,然后将文本重新构建为一个与$count长度相同的数组;
但我认为会有更好的选择。
后来编辑:
这是输入 *IMPORTANT[ ! ]: 表格中的数据是“fine”,没有损坏,只有一行!将其保存为CSV文件并在记事本中打开,显示如下:
asd;"asd
asd
asd";asd;asd

以下是代码:

$handle = fopen("file.csv","r");
$data = fgetcsv($handle,";");
while($data = fgetcsv($handle)) {
    $array = explode(";",$data[0]);
    print_r($array);
}
fclose($handle);

这里是回显的数据。
Array ( [0] => asd [1] => "asd ) Array ( [0] => asd ) Array ( [0] => asd" [1] => asd [2] => asd [3] => ) 

谢谢


1
“hidden line”是什么意思? - Aurelio De Rosa
打开一个Excel文件,输入一些内容,然后按下Alt+Enter键,接着输入更多的内容。 - cristi _b
1
@christi...然后以csv格式保存此文件,并使用fgetcsv()读取它。感到惊讶吗?你所有想象中的损坏行在哪里呢? - Your Common Sense
1个回答

4

如果字段被正确引用,测试您的情况并查看是否存在损坏行非常容易。

因此,像这样的CSV行

1,"joe
""Big Coyote""
Hopkins",598600

将不会出现任何问题,能够成功读取。


假设我编写了一个遵循某些可预测模式的脚本,但我预计我的用户可能会提交错误的数据,因此我想在行内删除换行符,我将尝试自己解决,感谢讲座。 - cristi _b
最终我修改了我的脚本,现在它终于可以工作了 while($data = fgetcsv($handle,1000,';','"')) print_r($data); 我可能没有把我的问题表述清楚,但是我已经阅读了php.net上的所有内容,仍然无法弄清楚。 - cristi _b

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接