在PHP中strrpos找到最后一个字符位置?

Moh*_*mad 6 php string

$string = "01234567890*****12345678901234567890*";  
echo strrpos($string,'*****');
Run Code Online (Sandbox Code Playgroud)

为什么这会返回36而不是15?(点击这里测试)

来自php.net
strrpos - 查找字符串中最后一次出现的子串的位置

我错过了什么?
谢谢!

解决方案: 使用下面的答案,我提供了PHP4替代方案

$haystack = "01234567890*****12345678901234567890*";  
$needle              = '*****';

$position = strlen($haystack) - strlen($needle) - strpos(strrev($haystack),strrev($needle));
echo $position; // 11
Run Code Online (Sandbox Code Playgroud)

Mar*_*era 10

可能你正在使用PHP 4:

来自php.net

needle:如果needle不是字符串,则将其转换为整数并应用为字符的序数值.针只能是PHP 4中的单个字符.

  • 谢谢!在问题体中添加了PHP 4替代代码 (2认同)

Gum*_*mbo 6

WriteCodeOnline.com使用PHP 4.4.9(测试它phpversion),strrpos5.0之前只接受一个字符而不是字符串:

该针只能在PHP 4的单个字符.

这就是为什么你的代码处理就像strrpos($string,'*').在PHP 5.0及更高版本中,返回值为11.