RETURN_FALSE;
}
p = haystack->val;
- if (haystack->len + offset + 1 >= needle_len) {
- e = haystack->val + haystack->len + offset + needle_len;
- } else {
+ if (-offset < needle_len) {
e = haystack->val + haystack->len;
+ } else {
+ e = haystack->val + haystack->len + offset + needle_len;
}
}
RETURN_FALSE;
}
p = haystack_dup->val;
- if (haystack->len + offset + 1 >= needle->len) {
- e = haystack_dup->val + haystack->len + offset + needle->len;
- } else {
+ if (-offset < needle->len) {
e = haystack_dup->val + haystack->len;
+ } else {
+ e = haystack_dup->val + haystack->len + offset + needle->len;
}
}
var_dump(@strrpos("a", ""));
var_dump(@strrpos("", "a"));
var_dump(@strrpos("\\\\a", "\\a"));
- var_dump(strrpos("/documents/show/5474", '/', -20));
- var_dump(@strrpos("/documents/show/5474", '/d', -21));
- var_dump(strrpos("/documents/show/5474", 'd', -19));
- var_dump(strrpos("/documents/show/5474", '/d', -15));
?>
--EXPECT--
int(5)
bool(false)
bool(false)
int(1)
-int(0)
-bool(false)
-int(1)
-int(0)
--- /dev/null
+--TEST--
+strr[i]pos() function with negative offset
+--FILE--
+<?php
+ var_dump(strrpos("haysthack", 'ha', -9));
+ var_dump(strrpos("haystack", 'h', -8));
+ var_dump(strrpos("haystack", 'k', -1));
+ var_dump(strrpos("haystack", "ka", -1));
+ var_dump(strrpos("haystack", 'a', -3));
+ var_dump(strrpos("haystack", 'a', -4));
+ var_dump(@strrpos("haystack", 'h', -9));
+
+ var_dump(strripos("HAYSTHACk", 'ha', -9));
+ var_dump(strripos("HAYSTACK", 'h', -8));
+ var_dump(strripos("HAYSTACK", 'k', -1));
+ var_dump(strripos("HAYSTACK", "ka", -1));
+ var_dump(strripos("HAYSTACK", 'a', -3));
+ var_dump(strripos("HAYSTACK", 'a', -4));
+ var_dump(@strripos("HAYSTACK", 'h', -9));
+?>
+--EXPECT--
+int(0)
+int(0)
+int(7)
+bool(false)
+int(5)
+int(1)
+bool(false)
+int(0)
+int(0)
+int(7)
+bool(false)
+int(5)
+int(1)
+bool(false)