2011-10-10 113 views
3

我有一个.csv模板我希望人们填满,保存并上传。csv跳转换行php

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

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

可能的解决方案:

假定第一行是正确的,$计数=计数定界符直至断线的数量,所述重建文本到一个数组只要$计数;

但我认为'更好的选择可用。

以后编辑

这里的输入*重要事项[! ]: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] =>) 

感谢

+1

“隐藏线”是什么意思? –

+0

打开excel文件并输入东西,然后按alt + enter然后键入更多东西 –

+1

@christi ...然后以csv格式保存此文件并用fgetcsv()读取它。惊讶吗?你想象中的所有行都在哪里? –

回答

3

它是非常容易测试你的案例,并看到没有破损的行,如果字段正确报价为

所以,一个CSV行这样

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

将不是一个单一的问题进行读取。

+0

假设我会制作一些遵循一些可预测的模式的脚本,但我期望我的用户可能会提交错误的数据,所以我想删除行内的换行符,我会试着找出我的自己,谢谢你的讲座 –

+0

,最后修改我的脚本,它终于工作while($ data = fgetcsv($ handle,1000,';','''))print_r($ data);我可能会因为没有做出道歉我的问题已经足够清楚,但是我在php.net上阅读的所有内容都无法解决。 –