(PHP 4, PHP 5, PHP 7, PHP 8)
strrpos — Возвращает позицию последнего вхождения подстроки в строку
Функция ищет в строке haystack
позицию последнего вхождения подстроки needle
.
haystack
Строка, в которой выполняется поиск.
needle
Строка, которую требуется найти.
До PHP 8.0.0 нестроковый аргумент needle
преобразовывался в целое число и заменялся на символ с этим порядковым значением в однобайтовой таблице символов.
Начиная с PHP 7.3.0 передача нестроковых значений устарела и полагаться на него настоятельно не рекомендуют.
Перед вызовом функции нестроковый аргумент needle
требовалось
либо приводить к строке, либо получать строковое значение символа функцией chr().
offset
При установке нулевого или положительного значения поиск выполняется слева направо,
при этом функция пропускает начальные байты строки haystack
,
смещение которых указали в параметре offset
.
При отрицательных значениях поиск начинается с позиции смещения offset
справа,
а не с начала строки haystack
.
Поиск выполняется справа налево, функция находит первое
вхождение подстроки needle
от выбранного байта.
Замечание:
Функция фактически ищет последнее вхождение подстроки
needle
, если условно воспринимать поиск как движение слева направо: при нулевом или положительном смещении поиск выполняется в части строки от смещенияoffset
до конца входной строки, а при отрицательном смещении — с начала входной строки до байта смещения.
Функция возвращает позицию последнего вхождения искомой подстроки
относительно начала строки haystack
независимо от направления поиска и смещения.
Замечание: Поиск вхождения подстроки начинается с 0, а не с 1 позиции.
Функция возвращает значение false
, если не находит подстроку.
Функция
возвращает как логическое значение false
,
так и нелогическое значение, которое приводится к false
.
Прочитайте раздел
«Логический тип»,
чтобы получить дополнительную информацию.
Используйте оператор ===
для проверки значения, которое возвращает функция.
Версия | Описание |
---|---|
8.0.0 |
Параметр needle теперь разрешает пустую строку.
|
8.0.0 |
Передача целого числа (int) в параметр needle больше не поддерживается.
|
7.3.0 |
Передача целого числа (int) в параметр needle устарела.
|
Пример #1 Пример поиска иголки в стоге сена
При проверке результата работы функции часто путают значения возврата «функция нашла символ на позиции 0» и «функция не нашла символ». Вот как определить разницу:
<?php
$mystring = 'Elephpant';
$pos = strrpos($mystring, "b");
if ($pos === false) { // Обратите внимание: три знака равенства
// не найдено...
}
?>
Пример #2 Поиск со смещением
<?php
$foo = "0123456789a123456789b123456789c";
// Ищем символ '0' с нулевого байта с начала строки
var_dump(strrpos($foo, '0', 0));
// Ищем символ '0' с первого байта с пропуском байта "0"
var_dump(strrpos($foo, '0', 1));
// Ищем символ '7' с 21-го байта после 20-го байта
var_dump(strrpos($foo, '7', 20));
// Ищем символ '7' с 29-го байта после 28-го байта
var_dump(strrpos($foo, '7', 28));
// Ищем символ '7' справа налево с 5-го байта с конца
var_dump(strrpos($foo, '7', -5));
// Ищем символ 'c' справа налево со 2-го байта с конца
var_dump(strrpos($foo, 'c', -2));
// Ищем символы '9c' справа налево со 2-го байта с конца
var_dump(strrpos($foo, '9c', -2));
?>
Результат выполнения приведённого примера:
int(0) bool(false) int(27) bool(false) int(17) bool(false) int(29)