mirror of
https://github.com/bdnugget/php-src.git
synced 2026-11-08 01:37:30 +00:00
don't try to compare strings if haystack is "" or shorter than needle
add test
This commit is contained in:
1 parent
3945c5e1c6
commit
9de18e2ca2
2 files changed
+61
-1
No files matched your search
@@ -2429,8 +2429,13 @@ PHP_FUNCTION(stripos)
|
||||
}
|
||||
|
||||
haystack_len = Z_UNILEN_P(haystack);
|
||||
|
||||
if (haystack_len == 0) {
|
||||
RETURN_FALSE;
|
||||
}
|
||||
|
||||
if (Z_TYPE_P(needle) == IS_UNICODE || Z_TYPE_P(needle) == IS_STRING) {
|
||||
if (!Z_UNILEN_P(needle)) {
|
||||
if (!Z_UNILEN_P(needle) || Z_UNILEN_P(needle) > haystack_len) {
|
||||
RETURN_FALSE;
|
||||
}
|
||||
if (Z_TYPE_P(haystack) != Z_TYPE_P(needle)) {
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
--TEST--
|
||||
stripos() function test
|
||||
--FILE--
|
||||
<?php
|
||||
var_dump(stripos("test string", "TEST"));
|
||||
var_dump(stripos("test string", "strIng"));
|
||||
var_dump(stripos("test string", "stRin"));
|
||||
var_dump(stripos("test string", "t S"));
|
||||
var_dump(stripos("test string", "G"));
|
||||
var_dump(stripos("te".chr(0)."st", chr(0)));
|
||||
var_dump(stripos("tEst", "test"));
|
||||
var_dump(stripos("teSt", "test"));
|
||||
var_dump(stripos("", ""));
|
||||
var_dump(stripos("a", ""));
|
||||
var_dump(stripos("", "a"));
|
||||
var_dump(stripos("a", " "));
|
||||
var_dump(stripos("a", "a"));
|
||||
var_dump(stripos("", 1));
|
||||
var_dump(stripos("", false));
|
||||
var_dump(stripos("", true));
|
||||
var_dump(stripos("a", 1));
|
||||
var_dump(stripos("a", false));
|
||||
var_dump(stripos("a", true));
|
||||
var_dump(stripos("1", 1));
|
||||
var_dump(stripos("0", false));
|
||||
var_dump(stripos("1", true));
|
||||
var_dump(stripos("\\\\a", "\\a"));
|
||||
|
||||
echo "Done\n";
|
||||
?>
|
||||
--EXPECT--
|
||||
int(0)
|
||||
int(5)
|
||||
int(5)
|
||||
int(3)
|
||||
int(10)
|
||||
int(2)
|
||||
int(0)
|
||||
int(0)
|
||||
bool(false)
|
||||
bool(false)
|
||||
bool(false)
|
||||
bool(false)
|
||||
int(0)
|
||||
bool(false)
|
||||
bool(false)
|
||||
bool(false)
|
||||
bool(false)
|
||||
bool(false)
|
||||
bool(false)
|
||||
bool(false)
|
||||
bool(false)
|
||||
bool(false)
|
||||
int(1)
|
||||
Done
|
||||
Reference in new issue
Block a user