Edit report at https://bugs.php.net/bug.php?id=46463&edit=1
ID: 46463 Comment by: php at zeguigui dot com Reported by: php-bugs at christoph-jeschke dot de Summary: fgetcsv() omits empty fields Status: No Feedback Type: Bug Package: Filesystem function related Operating System: GNU/Linux PHP Version: 5.2CVS-2008-11-01 Block user comment: N Private report: N New Comment: I have the same issue using \t as a delimiter and " as an enclosure. php -v PHP 5.3.8-pl0-gentoo (cli) (built: Dec 5 2011 22:34:55) Please not that § is a valid ascii character (\u00A7) Previous Comments: ------------------------------------------------------------------------ [2009-09-27 01:00:02] php-bugs at lists dot php dot net No feedback was provided for this bug for over a week, so it is being suspended automatically. If you are able to provide the information that was originally requested, please do so and change the status of the bug back to "Open". ------------------------------------------------------------------------ [2009-09-19 19:08:07] sjo...@php.net Thank you for your bug report. Your example uses a strange delimeter. First, it contains multiple characters. Second, it contains non-ASCII characters. The documentation says that the delimeter should be one character. When I try your example, the lines are not split at all, so I can not reproduce the problem. Can you reproduce the problem with an ASCII-delimeter consisting of multiple characters? Can you reproduce the problem with a delimiter which is a single non-ASCII character? Can you still reproduce the problem with the latest PHP version? ------------------------------------------------------------------------ [2008-11-02 13:53:59] php-bugs at christoph-jeschke dot de # php -v PHP 5.2.7RC3-dev (cli) (built: Nov 2 2008 14:49:46) Copyright (c) 1997-2008 The PHP Group Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologie Returns: array(3) { [0]=> string(7) "line1f1" [1]=> string(7) "line1f2" [2]=> string(7) "line1f3" } array(3) { [0]=> string(7) "line2f1" [1]=> string(7) "line2f2" [2]=> string(7) "line2f3" } array(2) { [0]=> string(7) "line3f1" [1]=> string(7) "line3f3" } The empty field is still omitted. ------------------------------------------------------------------------ [2008-11-02 09:26:57] php-bugs at christoph-jeschke dot de Description: ------------ Since PHP5, fgetcsv() omits empty fields instead returning a empty string as did in PHP4. Reproduce code: --------------- csv.php ======= <?php $h = fopen('paragraph.csv','r'); while(false !== ($l = fgetcsv($h, 1024, '§', '\\'))) { var_dump($l); } fclose($h); ?> paragraph.csv ============= line1f1§line1f2§line1f3 line2f1§line2f2§line2f3 line3f1§§line3f3 Expected result: ---------------- array(3) { [0]=> string(7) "line1f1" [1]=> string(7) "line1f2" [2]=> string(7) "line1f3" } array(3) { [0]=> string(7) "line2f1" [1]=> string(7) "line2f2" [2]=> string(7) "line2f3" } array(3) { [0]=> string(7) "line3f1" [1]=> string(0) "" [2]=> string(7) "line3f3" } Actual result: -------------- array(3) { [0]=> string(7) "line1f1" [1]=> string(7) "line1f2" [2]=> string(7) "line1f3" } array(3) { [0]=> string(7) "line2f1" [1]=> string(7) "line2f2" [2]=> string(7) "line2f3" } array(2) { [0]=> string(7) "line3f1" [1]=> string(7) "line3f3" } ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=46463&edit=1