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 this is not your bug, you can add a comment by following this link.
If this is your bug, but 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

Add a Patch

Pull Requests

Add a Pull Request

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-2024 The PHP Group
All rights reserved.
Last updated: Fri Mar 29 14:01:28 2024 UTC