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.
精彩评论