Reputation: 57916
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
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
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
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
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