strrpos

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

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

Описание

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

Ищет позицию последнего вхождения подстроки needle в строку haystack.

Список параметров

haystack

Строка, в которой производится поиск.

needle

Строка для поиска.

До PHP 8.0.0, если параметр needle — не строка, он преобразовывается в целое число и трактуется как код символа. Это поведение устарело с PHP 7.3.0 и полагаться на него крайне не рекомендуется. В зависимости от предполагаемого поведения, параметр needle должен быть либо явно приведён к строке, либо должен быть выполнен явный вызов функции chr().

offset

Если равно или больше ноля, то поиск будет идти слева направо и, при этом, будут пропущены первые offset байт строки haystack.

Если меньше ноля, то поиск начинается с offset байта справа, а не с начала haystack. Поиск выполняется справа налево, ищется первое вхождение needle от выбранного байта.

Замечание:

Фактически это будет последнее вхождение needle без учёта offset последних байт.

Возвращаемые значения

Возвращает номер позиции последнего вхождения needle относительно начала строки haystack (независимо от направления поиска и смещения (offset)).

Замечание: Позиция в строке строки отсчитывается от 0, а не от 1.

Возвращает false, если искомая строка не найдена.

Внимание

Функция возвращает как логическое значение false, так и нелогическое значение, которое приводится к false. Прочитайте раздел «Логический тип», чтобы получить дополнительную информацию. Используйте оператор === для проверки значения, которое возвращает функция.

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

ВерсияОписание
8.0.0 Параметр needle теперь разрешает пустую строку.
8.0.0 Передача целого числа (int) в needle больше не поддерживается.
7.3.0 Передача целого числа (int) в needle объявлена устаревшей.

Примеры

Пример #1 Проверка существования искомой строки

Легко ошибиться и перепутать возвращаемые значения в случаях "символ найден в нулевой позиции" и "символ не найден". Вот так можно узнать разницу:

<?php

$pos
= strrpos($mystring, "b");
if (
$pos === false) { // обратите внимание: три знака равенства

Пример #2 Поиск со смещением

<?php
$foo
= "0123456789a123456789b123456789c";

var_dump(strrpos($foo, '7', -5)); // Поиск происходит в обратном направлении и

Результат выполнения приведённого примера:

int(0) bool(false) int(27) bool(false) int(17) bool(false) int(29)

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

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