读取CSV并使用PHP将相同的内容放在新CSV中

时间:2014-03-07 13:51:38

标签: php csv

我目前正在使用以下代码打开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:我想要实现的是替换图像列,我已经编写了一个替换图像网址的脚本,现在它可以正常工作,除了这个问题..

2 个答案:

答案 0 :(得分:1)

尝试使用:

fputcsv($fp, $data, ';', '');

而不是:

fputcsv($fp, $data, ';');

有关fputcsv函数的详细信息,请参阅PHP文档:http://nl3.php.net/fputcsv

第4个参数($ enclosure)默认为'“',这就是列值被引号括起来的原因。

答案 1 :(得分:1)

您可以使用copy function并测试结果是否正确。