(PHP 4, PHP 5, PHP 7, PHP 8)
strrpos — Возвращает позицию последнего вхождения подстроки в строке
Ищет позицию последнего вхождения подстроки 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(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)