#48035 [Tbd]: explode() returns empty array if delimiter not found and limit is negative

From: Date: Tue, 21 Apr 2009 14:00:52 +0000
Subject: #48035 [Tbd]: explode() returns empty array if delimiter not found and limit is negative
References: 1  Groups: php.bugs php.doc.bugs 
Request: Send a blank email to php-bugs+get-136092@lists.php.net to get a copy of this message
ID: 48035 Updated by: rquadling@php.net Reported By: Bjorn dot Wiberg at its dot uu dot se Status: To be documented Bug Type: Strings related Operating System: Debian 5.0.1, IBM AIX 5.3 PHP Version: 5.2.9 New Comment: A negative limit reduces the size of the resultant array. So explode('_', 'test') returns a single entry. A limit of -1 essentially throws that entry away. The documentation may be better if it said : "If delimiter contains a value that is not contained in string and a negative limit is used, then an empty array will be returned. For any other limit, an array containing string will be returned." Previous Comments: ------------------------------------------------------------------------ [2009-04-21 12:21:03] iliaa@php.net . ------------------------------------------------------------------------ [2009-04-21 11:19:00] Bjorn dot Wiberg at its dot uu dot se Description: ------------ It appears that explode() returns an empty array (instead of an array with string in it) if limit is negative and delimiter contains a value that is not contained in string. The documentation of explode() (http://www.php.net/manual/en/function.explode.php, section "Return Values") however states that "If delimiter contains a value that is not contained in string, then explode() will return an array containing string", which then does not hold for negative limits. Reproduce code: --------------- <?php print_r(explode('_', 'test', -1)); print_r(explode('_', 'test_underscore', -1)); print_r(explode('_', 'test')); print_r(explode('_', 'test_underscore')); ?> Expected result: ---------------- Array ( [0] => test ) Array ( [0] => test ) Array ( [0] => test ) Array ( [0] => test [1] => underscore ) Actual result: -------------- bwiberg@musica-lp02:~$ php -n -f test.php Array ( ) Array ( [0] => test ) Array ( [0] => test ) Array ( [0] => test [1] => underscore ) ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=48035&edit=1

« previous php.bugs (#136092) next »