我有一个输入CSV,其中“列”没有包含在任何内容中。
文件内容($ input = fopen( filename );):
1,2,3,4,5,6,7 a,b,c,d,e,f,g 9,8,7,6,5,4,3 z,y,x,w,v,u,t
我在让fgetcsv()工作时遇到问题,因为这些值没有围栏。
while($row = fgetcsv($input)) {
print_r($row);
}
结果:
1111
我已经尝试了一些我能想到的基本内容:
fgetcsc($file, 0, ',', '\');
fgetcsc($file, 0, ',', '');
任何解决方案的想法?手动编辑我的输入文件并不是一个选项,因为它有数百万行。
答案 0 :(得分:4)
目前尚不清楚你的问题是什么。 fgetcsv
和str_getcsv
也适用于没有引号的列:
print_r(str_getcsv('1,2,3,4,5,6,7'));
返回:
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
[5] => 6
[6] => 7
)
引号是可选的,仅适用于CSV,它可以在值中包含列分隔符:
column1, "Column 2 with , comma inside", colum3
答案 1 :(得分:1)
您根本不必使用这两个最后一个参数,它们是可选的。只需使用:
fgetcsv($file, 1000);
这将自动假定分隔符是逗号。此外,长度不能为0,而是应该读取的正数字符。
或者:您不必依赖fgetcsv
,只需使用explode
:
$values = explode(",", $row);
答案 2 :(得分:0)
更合适的方法是将机箱值更改为很少使用的(或根本不使用)。
我发现,最好的变体是chr(0)字符。
fgetcsv($handle, null, "\t", chr(0))
对我来说很好,不应该破坏,除非你有一个非常极端的CSV数据。