Bug #62461 [Nab]: error in explode
| From: | rasmus@php.net | Date: | Sat, 07 Jul 2012 22:59:23 +0000 |
| Subject: | Bug #62461 [Nab]: error in explode | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-171788@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=62461&edit=1
ID: 62461
Updated by: rasmus@php.net
Reported by: php dot net at pravec dot de
Summary: error in explode
Status: Not a bug
Type: Bug
Package: Strings related
Operating System: debian
PHP Version: 5.3.14
Block user comment: N
Private report: N
New Comment:
Why should an empty string be treated differently from a non-empty string here?
explode() is defined to return an array of strings each of which is a substring
of string formed by splitting it on boundaries formed by the string delimiter. So
you have string "abc" or you have string "" and you try to split it by
"x". "abc"
split up by the delimiter "x" is just going to give you "abc" just like
"" split
by delimiter "x" is just going to give you ""
Previous Comments:
------------------------------------------------------------------------
[2012-07-07 22:46:05] php dot net at pravec dot de
i know ... php is not vbscript. but take this
a = ""
For Each b in Split(a, ":")
Call MsgBox(b)
Next
a can contain "1", "1:2", or ""
if a is "1" a single popup will appear
if a is "1:2" two popup will appear
if a is "" no popup will appear
if string is empty, counting explode have to return 0, not 1
nothing divided by something will return: nothing ... not 1
------------------------------------------------------------------------
[2012-07-02 03:01:16] aharvey@php.net
Quoting the manual:
"If delimiter contains a value that is not contained in string and a negative
limit is used, then an empty array will be returned, otherwise an array
containing string will be returned."
This is the second case: the delimiter isn't in the string, so an array
containing the string is returned.
Not a bug -> closing.
------------------------------------------------------------------------
[2012-07-02 02:16:19] php dot net at pravec dot de
Description:
------------
---
From manual page: http://www.php.net/function.explode#refsect1-function.explode-description
---
Test script:
---------------
$a = explode("\r\n", "");
$b = fixed_explode("\r\n", "");
printf("(%d/%d)", count($a), count($b));
function fixed_explode($delimiter, $string, $limit = 0xFFFFFFFF)
{
return($string ? explode($delimiter, $string, $limit) : array());
}
Expected result:
----------------
result will be (1/0) but should be (0/0)
it's on you to fix this. i guess this must be an error.
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=62461&edit=1