strrpos
(PHP 4, PHP 5, PHP 7)
strrpos — Возвращает позицию последнего вхождения подстроки в строке
Описание
$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
, так и значение не типа boolean, которое приводится к false
. За более подробной информацией обратитесь к разделу Булев тип. Используйте оператор === для проверки значения, возвращаемого этой функцией.
Список изменений
Версия | Описание |
---|---|
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(17)
var_dump(strrpos($foo, '7', 20)); // Начинает поиск с 20 позиции в строке.
// Результат: int(27)
var_dump(strrpos($foo, '7', 28)); // Результат: bool(false)
?>
Результат выполнения данного примера:
int(0) bool(false) int(27) bool(false) int(17) bool(false) int(29)
Смотрите также
- strpos() - Возвращает позицию первого вхождения подстроки
- stripos() - Возвращает позицию первого вхождения подстроки без учета регистра
- strripos() - Возвращает позицию последнего вхождения подстроки без учета регистра
- strrchr() - Находит последнее вхождение символа в строке
- substr() - Возвращает подстроку