$string = "01234567890*****12345678901234567890*";
echo strrpos($string,'*****');
为什么这会返回36而不是15? (click here要测试)
from php.net
strrpos - 查找最后一次出现的子字符串的位置 在一个字符串
我错过了什么?
谢谢!
解: 使用下面的答案,我提供了PHP4替代
$haystack = "01234567890*****12345678901234567890*";
$needle = '*****';
$position = strlen($haystack) - strlen($needle) - strpos(strrev($haystack),strrev($needle));
echo $position; // 11
答案 0 :(得分:10)
答案 1 :(得分:6)
WriteCodeOnline.com使用PHP 4.4.9(使用phpversion
测试)和5.0之前的strrpos
仅接受一个字符而不是字符串:
needle 只能是PHP 4中的单个字符。
这就是为什么你的代码处理方式就像strrpos($string,'*')
一样。在PHP 5.0及更高版本中,返回的值为11。
答案 2 :(得分:2)
$string = "01234567890*****12345678901234567890*";
echo strrpos($string,'*****');
PHP Version 5.3.5结果为11
如果你想最后一次出现,试试这个
$string = "01234567890*****12345678901234567890*";
echo strripos($string,'*');//36