diff options
author | Sara Golemon <pollita@php.net> | 2003-04-12 20:04:06 +0000 |
---|---|---|
committer | Sara Golemon <pollita@php.net> | 2003-04-12 20:04:06 +0000 |
commit | 76965beb04478defa61d7d32f552247a4c3242e2 (patch) | |
tree | a47d3737b0236c84e8b8c7237f24576a19d1516f /ext/standard | |
parent | 0b5c1112c502b31ce86094394d9ebb2d04e74ae7 (diff) | |
download | php-git-76965beb04478defa61d7d32f552247a4c3242e2.tar.gz |
Add tests for strrpos/stripos, and minor fix to maintain BC for condition with empty needles/haystacks
Diffstat (limited to 'ext/standard')
-rw-r--r-- | ext/standard/string.c | 8 | ||||
-rw-r--r-- | ext/standard/tests/strings/strripos.phpt | 35 | ||||
-rw-r--r-- | ext/standard/tests/strings/strrpos.phpt | 34 |
3 files changed, 77 insertions, 0 deletions
diff --git a/ext/standard/string.c b/ext/standard/string.c index aba93f5059..c329f9e16a 100644 --- a/ext/standard/string.c +++ b/ext/standard/string.c @@ -1579,6 +1579,10 @@ PHP_FUNCTION(strrpos) RETURN_FALSE; } + if ((haystack_len == 0) || (needle_len == 0)) { + RETURN_FALSE; + } + if (offset >= 0) { p = haystack + offset; e = haystack + haystack_len - needle_len; @@ -1615,6 +1619,10 @@ PHP_FUNCTION(strripos) RETURN_FALSE; } + if ((haystack_len == 0) || (needle_len == 0)) { + RETURN_FALSE; + } + needle_dup = estrndup(needle, needle_len); php_strtolower(needle_dup, needle_len); haystack_dup = estrndup(haystack, haystack_len); diff --git a/ext/standard/tests/strings/strripos.phpt b/ext/standard/tests/strings/strripos.phpt new file mode 100644 index 0000000000..c9c6eae7e3 --- /dev/null +++ b/ext/standard/tests/strings/strripos.phpt @@ -0,0 +1,35 @@ +--TEST-- +strripos() function +--POST-- +--GET-- +--FILE-- +<?php + var_dump(strripos("test test string", "test")); + var_dump(strripos("test string sTring", "string")); + var_dump(strripos("test strip string strand", "str")); + var_dump(strripos("I am what I am and that's all what I am", "am", -3)); + var_dump(strripos("test string", "g")); + var_dump(strripos("te".chr(0)."st", chr(0))); + var_dump(strripos("tEst", "test")); + var_dump(strripos("teSt", "test")); + var_dump(@strripos("foo", "f", 1)); + var_dump(@strripos("", "")); + var_dump(@strripos("a", "")); + var_dump(@strripos("", "a")); + var_dump(@strripos("\\\\a", "\\a")); +?> +--EXPECT-- +int(5) +int(12) +int(18) +int(12) +int(10) +int(2) +int(0) +int(0) +bool(false) +bool(false) +bool(false) +bool(false) +int(1) + diff --git a/ext/standard/tests/strings/strrpos.phpt b/ext/standard/tests/strings/strrpos.phpt new file mode 100644 index 0000000000..0d4337605a --- /dev/null +++ b/ext/standard/tests/strings/strrpos.phpt @@ -0,0 +1,34 @@ +--TEST-- +strrpos() function +--POST-- +--GET-- +--FILE-- +<?php + var_dump(strrpos("test test string", "test")); + var_dump(strrpos("test string sTring", "string")); + var_dump(strrpos("test strip string strand", "str")); + var_dump(strrpos("I am what I am and that's all what I am", "am", -3)); + var_dump(strrpos("test string", "g")); + var_dump(strrpos("te".chr(0)."st", chr(0))); + var_dump(strrpos("tEst", "test")); + var_dump(strrpos("teSt", "test")); + var_dump(@strrpos("foo", "f", 1)); + var_dump(@strrpos("", "")); + var_dump(@strrpos("a", "")); + var_dump(@strrpos("", "a")); + var_dump(@strrpos("\\\\a", "\\a")); +?> +--EXPECT-- +int(5) +int(5) +int(18) +int(12) +int(10) +int(2) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +int(1) |