php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #46463 fgetcsv() omits empty fields
Submitted: 2008-11-02 09:26 UTC Modified: 2009-09-27 01:00 UTC
Votes:17
Avg. Score:4.6 ± 0.6
Reproduced:16 of 16 (100.0%)
Same Version:3 (18.8%)
Same OS:11 (68.8%)
From: php-bugs at christoph-jeschke dot de Assigned:
Status: No Feedback Package: Filesystem function related
PHP Version: 5.2CVS-2008-11-01 OS: GNU/Linux
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: php-bugs at christoph-jeschke dot de
New email:
PHP Version: OS:

 

 [2008-11-02 09:26 UTC] 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"
}


Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2008-11-02 13:53 UTC] 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.
 [2009-09-19 19:08 UTC] sjoerd@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?
 [2009-09-27 01:00 UTC] 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".
 [2011-12-29 12:38 UTC] php at zeguigui dot com
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)
 [2011-12-29 12:44 UTC] php at zeguigui dot com
In fact I have the #55674 bug
 [2014-03-31 08:45 UTC] bup at christmann dot info
I have the same issue with the newest 5.5.10.

Why thats not fixed? :(
 
PHP Copyright © 2001-2025 The PHP Group
All rights reserved.
Last updated: Wed Jan 15 14:01:30 2025 UTC