在以下代码中,如果我在不给出偏移量的情况下搜索字符位置(使用默认的正索引,从0开始),则打印0
$str = "abcdashboard";
$s = 'a';
$pos = stripos($str,$s);
if($pos !==FALSE){
echo 'positive: character found'.$pos;
}
但是,如果我使用负索引,则要从最后开始搜索,它将无法正常工作。什么都不打印
$str = "abcdashboard";
$s = 'a';
$neg = stripos($str,$s,-1);
if($neg !==FALSE){
echo 'negative: character found'.$neg;
echo "<br>";
}
我从以下内容中找不到
偏移量 如果指定,搜索将从字符串的开头开始计算此数目的字符。如果偏移量为负,则搜索将从字符串的末尾开始计算此数量的字符。
答案 0 :(得分:3)
stripos()
不会从字符串的末尾开始搜索。它的第三个参数告诉它从哪里开始搜索,但是仍然从该索引开始搜索到字符串的结尾。
-1
告诉它仅检查干草堆字符串的最后一个字符(第一个参数)。
如果要从头到尾进行搜索,请尝试strripos()
。
字符串函数strrchr()
,strrpos()
和strripos()
的名称中的第二个r
来自“ reverse” 。这些函数从指定位置(默认情况下为字符串的结尾)开始向string $needle
字符串的开头搜索第二个参数(string $haystack
)到第一个参数($haystack
)。
因此,他们发现$needle
的最后出现在$haystack
中,这与相似的功能相反,在其名称中没有第二个r
的情况下找到了第一次出现。
第三个参数(int $offset
)的语义与其他字符串搜索功能相同:正值(和0
)从$haystack
的开头开始计数,负数值通过从$haystack
的末尾开始计数来设置起始位置。
答案 1 :(得分:3)
应该可以。
stripos($str,$s,-4);
将搜索最后4个字符并输出
negative: character found 9