mirror of
https://github.com/php/php-src.git
synced 2024-11-24 10:24:11 +08:00
Fixed bug #53848 (fgetcsv() ignores spaces at beginnings of fields).
This commit is contained in:
parent
ef74038d1d
commit
69a12bfb3f
1
NEWS
1
NEWS
@ -44,6 +44,7 @@ PHP NEWS
|
||||
. Fixed bug #54866 (incorrect accounting for realpath_cache_size) (Dustin Ward)
|
||||
. Fixed bug #54721 (Different Hashes on Windows, BSD and Linux on wrong Salt size)
|
||||
(Pierre, os at irj dot ru)
|
||||
. Fixed bug #53848 (fgetcsv() ignores spaces at beginnings of fields). (Ilia)
|
||||
. Fixed bug #50363 (Invalid parsing in convert.quoted-printable-decode filter).
|
||||
(slusarz at curecanti dot org)
|
||||
. Fixed bug #48465 (sys_get_temp_dir() possibly inconsistent when using
|
||||
|
@ -2196,30 +2196,17 @@ PHPAPI void php_fgetcsv(php_stream *stream, char delimiter, char enclosure, char
|
||||
char *comp_end, *hunk_begin;
|
||||
|
||||
tptr = temp;
|
||||
|
||||
/* 1. Strip any leading space */
|
||||
for (;;) {
|
||||
inc_len = (bptr < limit ? (*bptr == '\0' ? 1: php_mblen(bptr, limit - bptr)): 0);
|
||||
switch (inc_len) {
|
||||
case -2:
|
||||
case -1:
|
||||
inc_len = 1;
|
||||
php_mblen(NULL, 0);
|
||||
break;
|
||||
case 0:
|
||||
goto quit_loop_1;
|
||||
case 1:
|
||||
if (!isspace((int)*(unsigned char *)bptr) || *bptr == delimiter) {
|
||||
goto quit_loop_1;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
goto quit_loop_1;
|
||||
inc_len = (bptr < limit ? (*bptr == '\0' ? 1: php_mblen(bptr, limit - bptr)): 0);
|
||||
if (inc_len == 1) {
|
||||
char *tmp = bptr;
|
||||
while (isspace((int)*(unsigned char *)tmp)) {
|
||||
tmp++;
|
||||
}
|
||||
if (*tmp == enclosure) {
|
||||
bptr = tmp;
|
||||
}
|
||||
bptr += inc_len;
|
||||
}
|
||||
|
||||
quit_loop_1:
|
||||
if (first_field && bptr == line_end) {
|
||||
add_next_index_null(return_value);
|
||||
break;
|
||||
|
25
ext/standard/tests/file/bug53848.phpt
Normal file
25
ext/standard/tests/file/bug53848.phpt
Normal file
@ -0,0 +1,25 @@
|
||||
--TEST--
|
||||
Bug #53848 (fgetcsv removes leading spaces from fields)
|
||||
--FILE--
|
||||
<?php
|
||||
$file = dirname(__FILE__) . "/bug39538.csv";
|
||||
@unlink($file);
|
||||
file_put_contents($file, "a,b\n c, d");
|
||||
$fp = fopen($file, "r");
|
||||
while ($l = fgetcsv($fp)) var_dump($l);
|
||||
fclose($fp);
|
||||
@unlink($file);
|
||||
?>
|
||||
--EXPECT--
|
||||
array(2) {
|
||||
[0]=>
|
||||
string(1) "a"
|
||||
[1]=>
|
||||
string(1) "b"
|
||||
}
|
||||
array(2) {
|
||||
[0]=>
|
||||
string(3) " c"
|
||||
[1]=>
|
||||
string(3) " d"
|
||||
}
|
Loading…
Reference in New Issue
Block a user