【问题标题】:Escaping line break in csv php在csv php中转义换行符
【发布时间】:2011-10-10 10:39:19
【问题描述】:

我有一个 .csv 模板,希望人们填写、保存并上传。

问题是这样的,假设一些用户会在一行中插入隐藏的换行符,当使用 fgetcsv() 时,它会输出被隐藏换行符打破的行。

如何避免换行符或清理我的数据?

可能的解决方案:

假设第一行是正确的,$count = count 分隔符的个数直到换行,只要 $count 将文本重建成一个数组;

但我认为有更好的选择。

稍后编辑

这是输入 *IMPORTANT[ ! ] : excel 文件里面的数据是“好的”,没有坏,是单行!!!将其保存为 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] => ) 

谢谢

【问题讨论】:

  • “隐藏行”是什么意思?
  • 打开一个excel文件并输入一些东西,然后按alt+enter然后输入更多的东西
  • @christi ...然后将此文件保存为 csv 格式并使用 fgetcsv() 读取它。惊讶吗?你想象中的断行都在哪里?

标签: php csv


【解决方案1】:

如果字段被正确引用,测试您的案例并查看没有损坏的行非常容易。

所以,像这样的 CSV 行

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

阅读不会有任何问题。

【讨论】:

  • 假设我会制作一个遵循一些可预测模式的脚本,但我预计我的用户可能会提交错误的数据,所以我想删除行内的换行符,我会试着自己弄明白,谢谢你的讲座
  • 最后修改了我的脚本,它终于可以工作了 while($data = fgetcsv($handle,1000,';','"')) print_r($data); 我可能会为此道歉让我的问题足够清楚,但我在 php.net 上阅读的所有内容我都无法弄清楚。
猜你喜欢
  • 2018-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多