summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/standard/string.c4
-rw-r--r--ext/standard/tests/strings/explode.phpt3
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) ""