diff options
-rw-r--r-- | ext/standard/string.c | 4 | ||||
-rw-r--r-- | ext/standard/tests/strings/explode.phpt | 3 |
2 files changed, 6 insertions, 1 deletions
diff --git a/ext/standard/string.c b/ext/standard/string.c index d3a6fdffd8..8e85045f66 100644 --- a/ext/standard/string.c +++ b/ext/standard/string.c @@ -1018,7 +1018,9 @@ PHP_FUNCTION(explode) array_init(return_value); if (! Z_STRLEN_PP(str)) { - add_next_index_stringl(return_value, "", sizeof("") - 1, 1); + if (limit >= 0 || argc == 2) { + add_next_index_stringl(return_value, "", sizeof("") - 1, 1); + } return; } diff --git a/ext/standard/tests/strings/explode.phpt b/ext/standard/tests/strings/explode.phpt index 6d54b66090..1047fb7856 100644 --- a/ext/standard/tests/strings/explode.phpt +++ b/ext/standard/tests/strings/explode.phpt @@ -17,6 +17,7 @@ var_dump(@explode("a", NULL)); var_dump(@explode(NULL, a)); var_dump(@explode("abc", "acb")); var_dump(@explode("somestring", "otherstring")); +var_dump(@explode("somestring", "otherstring", -1)); var_dump(@explode("a", "aaaaaa")); var_dump(@explode("==", str_repeat("-=".ord(0)."=-", 10))); var_dump(@explode("=", str_repeat("-=".ord(0)."=-", 10))); @@ -63,6 +64,8 @@ array(1) { [0]=> string(11) "otherstring" } +array(0) { +} array(7) { [0]=> string(0) "" |