我目前正在使用以下代码打开CSV文件,并将内容写入新文件。
<?php
// File to be written
$wFile = 'file.csv'; // Write file
$oFile = 'file_new.csv'; // Original file
// Chmod the file to be sure
chmod($wFile, 0777);
// Open the new file
$fp = fopen( $wFile, 'w');
// Open the original file
if( ($handle = fopen($oFile, "r") ) !== FALSE )
{
// Walk through the file and write it to a new file
while( ($data = fgetcsv( $handle , 1024, ";") ) !== FALSE )
{
fputcsv($fp, $data, ';'); // Write
}
// Close
fclose($handle);
fclose($fp);
}
一切都有效,除了一件事。当我RAW查看csv时,列标题在原始文件中如下:
SKU;名称; PE; SDR; PP;代码;类别; Wasserdruck bar;“Gasdruck bar“;路径;图像(img.jpg,img2,jpg); D * d; d1 * d2; dR(p); d;PreisÄ。/St¸ck; Kg .; D(mm); d(mm ); L(mm); L1(mm); H(mm);“最大。 Reperatur durchmesserÿ“; Karton; VPE; Typ; Steel Nominal DN; K(mm);”D (毫米) “;” D2 (mm)“; n ad;备注;备注2; Aanbeveling supplementen
创建的CSV具有第一行(列标题),如下所示:
SKU;名称; PE; SDR; PP;代码;类别;“Wasserdruck bar”;“Gasdruck bar“; Path;”image(img.jpg,img2,jpg)“;”D * d“;”d1 * d2“; dR(p); d;”Preis 。/St ck“; Kg。; “D(mm)”;“d(mm)”;“L(mm)”;“L1(mm)”;“H(mm)”;“最大。 Reperatur durchmesser “; Karton; VPE; Typ;”Steel Nominal DN“;”K(mm)“;”D (毫米) “;” D2 (mm)“;”n ad“;备注;”备注2“;”Aanbeveling supplementen“
正如您所看到的,一些特殊字符出错了,但这并不重要。主要问题(我认为)是fputcsv在表头列周围加上引号。
在第二个例子中,你可以看到“aanbeveling supplementen”周围有引号,原来这个栏目周围没有引号......
我希望有人可以帮助我,提前谢谢:)
PS:我想要实现的是替换图像列,我已经编写了一个替换图像网址的脚本,现在它可以正常工作,除了这个问题..答案 0 :(得分:1)
尝试使用:
fputcsv($fp, $data, ';', '');
而不是:
fputcsv($fp, $data, ';');
有关fputcsv函数的详细信息,请参阅PHP文档:http://nl3.php.net/fputcsv
第4个参数($ enclosure)默认为'“',这就是列值被引号括起来的原因。
答案 1 :(得分:1)
您可以使用copy function并测试结果是否正确。