开发者

fgetcsv - Add Quotes to fields that do not have quotes

I have a text file (its comma delimited with some fields wrapped around in double quotes) when I parse through it using this:

if (($handle = fopen('C:\tester\fake.txt', "r")) !== FALSE) {
    while (($data = fgetcsv($handle, ",")) !== FALSE) {
        $num = count($data);
        //echo "<p> $num fields in line $row: <br /></p>\n";
        $row++;
        for ($c=0; $c < $num; $c++) {
            echo $data[$c] . "<br />\n";
        }
    }
    fclose($handle);
}

It shows each field not to have quotes, does the fgetcsv remove this automatically?

How can I get it to show fields that do not have quotes and add quotes to them and then save the file? Possible?

Thanks all

Update

I have just tried the fputcsv and I find the file written doesn't have quotes around the fields, only very few, less than the initial file had! What am I doing wrong?

$row = 1;
$newfile = fopen('C:\new-file.txt', "w");

if (($handle = fopen('C:\fake.txt', "r")) !== FALSE) {
    while (($data = fgetcsv($handle, ",")) !== FALSE) {
        $num = count($data);
            fputcsv($newfil开发者_JAVA技巧e, $data, ',', '"');
    }
    fclose($handle);
    fclose($newfile);
}


fgetcsv does remove the quotes.

With fputcsv you can write a cvs-file. It does have options regarding using quotes or not, but it will do the same for all fields.

Check http://www.php.net/fgetcsv and http://www.php.net/fputcsv


The quotes are part of the CSV file format (quotes around fields that contains , or newlines), therefore fgetcvs will (and is expected to) remove them.


yes it removes the quotes because it assumes you want the data for the columns and the quotes arent part of the data. use fget instead.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜