Abs
Abs

Reputation: 57916

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($newfile, $data, ',', '"');
    }
    fclose($handle);
    fclose($newfile);
}

Upvotes: 1

Views: 2536

Answers (3)

prodigitalson
prodigitalson

Reputation: 60413

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.

Upvotes: 0

Jimmy Shelter
Jimmy Shelter

Reputation: 1540

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

Upvotes: 3

Emil Vikstr&#246;m
Emil Vikstr&#246;m

Reputation: 91892

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.

Upvotes: 1

Related Questions