|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2010-06-20 20:07 UTC] felipe@php.net
-Status: Open
+Status: Bogus
[2010-06-20 20:07 UTC] felipe@php.net
[2010-06-20 20:08 UTC] felipe@php.net
-Status: Bogus
+Status: Wont fix
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sat Nov 01 00:00:01 2025 UTC |
Description: ------------ The fgetcsv has some really strange behaviour under PHP6. When parsing a multi line record, if it begins with """ (one quote for enclosure and two quotes for an escaped quote within text) and just before the line break there is "", it will skip the beginning quote, add an empty array field, then output the 2nd line of the multi line csv record and you get some random empty fields in following records. The example attached clearly shows the problem described above. The code works as expected under PHP5. Reproduce code: --------------- test.php <?php $file = fopen("test.csv", 'rb'); while (($row = fgetcsv($file, 6000, ';', '"')) !== FALSE) { print_r($row); } ?> test.csv "A";"""Some long text"" some more";"1" "B";"""Hmm""";"2" Expected result: ---------------- Array ( [0] => A [1] => "Some long text" some more [2] => 1 ) Array ( [0] => B [1] => "Hmm" [2] => 2 ) Actual result: -------------- Array ( [0] => A [1] => Some long text" [2] => [3] => some more" [4] => 1 [5] => ) Array ( [0] => B [1] => "Hmm" [2] => 2 )