我告訴你這個函數「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