strrpos

(PHP 4, PHP 5, PHP 7, PHP 8)

strrposВозвращает позицию последнего вхождения подстроки в строку

Описание

strrpos(string $haystack, string $needle, int $offset = 0): int|false

Функция ищет в строке 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)

Смотрите также

  • strpos() - Находит позицию первого вхождения подстроки
  • stripos() - Возвращает позицию первого вхождения подстроки без учёта регистра
  • strripos() - Возвращает позицию последнего вхождения подстроки без учёта регистра
  • strrchr() - Находит последнее вхождение символа в строке
  • substr() - Возвращает подстроку