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