我告诉你这个函数“fputcsv”有问题!我为什么这么说?我用 4 行创建了一个 csv 文件
l1data1;l1data2;l1data3;l1data4
l2data1;l2data2;l2data3;l2data4
l3data1;l3data2;l3data3;l3data4
l4data1;l4data2;l4data3;l4data4
好的,现在我使用 fgetcsv 和 fputcsv 简单地将这个文件复制到另一个文件中,如下所示:
$handle = fopen($nameFile, "r") or die("Cannot open file: ".$nameFile);
$temporaryFile = fopen($nameTempFile, "w") or die("Cannot open file: ".$nameTempFile);
while (($data = fgetcsv($handle,"", ";")) !== false) {
fputcsv($temporaryFile, $data,";");
}
fclose($temporaryFile);
fclose($handle);
输出文件 :
l1data1;l1data2;l1data3;l1data4
l2data1;l2data2;"l2data3";l2data4
l3data1;l3data2;"l3data3";l3data4
l4data1;l4data2;"l4data3";l4data4
出于某种原因,它在我的第三列中没有明显的原因留下双引号。
现在我用一些旧方法来做:
while ($data=fgets($handle)){
fputs($temporaryFile, $data);
}
输出如预期:
l1data1;l1data2;l1data3;l1data4
l2data1;l2data2;l2data3;l2data4
l3data1;l3data2;l3data3;l3data4
l4data1;l4data2;l4data3;l4data4
解释一下!
编辑 :
CodeOffreArtemis;CodeOffre42C;CodeOffreSagic;ServiceType;Rate;TypeInterface;Techno;Libelles;CodeOffreCristal
G8R1_ACAB;ABE;;ACA;18;Eth;A;ACo Max2;test
G8R1_ACAC;ABE;ACABUS;ACA;18;Eth;A;ACo 20MMax;
G8R1_ACAD;AKE;ACAD;ACA;2MMAX;Eth;A;ACo 2MMax;
G8R1_ACANBA;WAB;;ACA;18;Eth;A;DSL Access Max2 ACA Nu ligne active;X201
G8R1_ACANBC;WAB;;ACA;18;Eth;A;DSL Access Max2 ACA Nu sur pré-câblée;X201
G8R1_ACANBI;WAB;;ACA;18;Eth;A;DSL Access Max2 ACA Nu ligne inactive;X201
G8R1_ACANBPORA;QAB;;ACA;18;Eth;A;DSL Access Max2 ACA Nu avec portabilité L active;X201
G8R1_ACANBR;WAB;;ACA;18;Eth;A;DSL Access Max2 ACA Nu Nd de routage;X201
G8R1_ACANCA;WAB;ACANB;ACA;18;Eth;A;DSL Access 20MMax ACA Nu ligne active;X201
第一行是标题其余的是数据。