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

# strrpos

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

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

### Описание

function 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`. Прочитайте раздел «Логический тип», чтобы получить дополнительную информацию. Используйте оператор === для проверки значения, которое возвращает функция.

### Ошибки

- Выбрасывается ошибка ValueError, если значение параметра `offset` больше длины параметра `haystack`.

### Список изменений

Версия | Описание
--- | ---
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() - Возвращает подстроку

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open