我告诉你这个函数“fputcsv”是越野车! 我为什么这么说? 我创建了一个CSV文件说,4号线PHP csv函数fputcsv
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
第一行是标题其余的数据。
双引号值在标准中,不应导致任何问题。这是奇怪的,但它为什么会这样做... –
输出文件1的第一行是否缺少双引号,或者是一个错字? –
我无法复制所得到的结果(使用PHP 5.3.24) - 尝试使用'var_dump'输出您正在从文件中读取的字符,也许? – andrewsi