Bug #46463 [Com]: fgetcsv() omits empty fields
| From: | php at zeguigui dot com | Date: | Thu, 29 Dec 2011 12:38:06 +0000 |
| Subject: | Bug #46463 [Com]: fgetcsv() omits empty fields | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-166132@lists.php.net to get a copy of this message | ||
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] 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?
------------------------------------------------------------------------
[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