strrpos в PHP найти последнюю позицию символа вместо? - PullRequest
6 голосов
/ 28 августа 2011
$string = "01234567890*****12345678901234567890*";  
echo strrpos($string,'*****');

почему это возвращает 36, а не 15?( нажмите здесь , чтобы проверить)

с php.net
strrpos - Найти положениепоследнее появление подстроки в строке

Что я пропускаю ???
Спасибо!

РЕШЕНИЕ: используя ответы нижеЯ предоставил PHP4 альтернативу

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

$position = strlen($haystack) - strlen($needle) - strpos(strrev($haystack),strrev($needle));
echo $position; // 11

Ответы [ 3 ]

10 голосов
/ 28 августа 2011

Возможно, вы используете PHP 4:

с php.net

needle : если игла не является строкой, онапреобразуется в целое число и применяется в качестве порядкового значения символа.Стрелка может быть только одним символом в PHP 4.

6 голосов
/ 28 августа 2011

WriteCodeOnline.com использует PHP 4.4.9 (протестируйте его с phpversion) и strrpos до версии 5.0 принимает только один символ, а не строку:

Игла может быть только одним символом в PHP 4.

Вот почему ваш код обрабатывается как strrpos($string,'*'). В PHP 5.0 и более поздних версиях возвращаемое значение будет равно 11.

2 голосов
/ 28 августа 2011
$string = "01234567890*****12345678901234567890*";  
echo strrpos($string,'*****');

PHP версии 5.3.5 результат 11

, если вы хотите получить последнее вхождение, попробуйте это

$string = "01234567890*****12345678901234567890*";  
echo strripos($string,'*');//36
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...