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

时间:2011-08-28 12:05:58

标签: php string

$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

3 个答案:

答案 0 :(得分:10)

可能你正在使用PHP 4:

from php.net

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

答案 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