strrpos в PHP находит последнюю позицию символа вместо этого?
$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 ответов
Вероятно, вы используете PHP 4:
игла: Если needle не является строкой, он приводится к целому и трактуется как код символа. Игла может быть только одним символом в PHP 4.
WriteCodeOnline.com использует PHP 4.4.9 (проверьте phpversion
) и strrpos
до 5.0 принимает только один символ, а не строку:
на игла может быть только один символ в PHP 4.
вот почему ваш код обрабатывается как strrpos($string,'*')
. В PHP 5.0 и более поздних версиях возвращаемое значение будет 11.
$string = "01234567890*****12345678901234567890*";
echo strrpos($string,'*****');
PHP версии 5.3.5 результат 11
Если вы хотите получить последнее вхождение попробовать этот
$string = "01234567890*****12345678901234567890*";
echo strripos($string,'*');//36