В этом руководстве вы узнаете, как использовать функции PHP strpos() и strrpos() для получения индекса первого вхождения подстроки в строку.
Функция PHP strpos() возвращает индекс ПЕРВОГО вхождения подстроки в строке.
Функция PHP strrpos() возвращает индекс ПОСЛЕДНЕГО вхождения подстроки в строке.
Синтаксис:
<?php
strpos( string $haystack , string $needle , int $offset = 0 ) : int|false
strrpos ( string $haystack , string $needle , int $offset = 0 ) : int|false
Параметры:
Параметр может быть положительным или отрицательным. Если значение offset положительное, функции strpos() и strrpos() начинают поиск с символа с индексом offset до конца строки.
Если значение offset отрицательное, функции strpos()и strrpos() справа налево,начиная с количества символов offset с конца строки до начала строки.
Если strpos/strrpos не находят needle в строке, они возвращают false.
В качестве примеров мы будем рассматривать только функцию strpos, т.к. функция strrpos работает идентично (за исключением первого и последнего вхождения).
Примеры использования:
Использование функции strpos() для поиска подстроки
<?php
$str = 'To do or not to do';
$position = strpos($str, 'do');
echo $position; // 3
$position2 = strrpos($str, 'do');
echo $position2; // 16
Использование функций PHP strpos/strrpos() для поиска подстроки со смещением
<?php
$str = 'To do or not to do';
$position = strpos($str, 'do', 4);
echo $position; // 16
$position2 = strrpos($str, 'do', 4);
echo $position2; //16
В этом примере результат работы функции strpos() совпадает с результатом strrpos(), т.к. strpos() возвращает индекс второго вхождения подстроки do, потому что он начинает поиск с индекса 4.
В следующем примере функция strpos() используется для поиска подстроки "To"в строке "To do or not to do":
<?php
$str = 'To do or not to do';
$position = strpos($str, 'To');
if ($position) {
echo $position;
} else {
echo 'Not found';
}
Результатом этого работы кода будет сообщение 'Not found'. Строка «To» находится в начале строки; следовательно, функция strpos() возвращает 0. Однако PHP оценивает 0 как ложь. Итак, вы видите сообщение «Not found» на выходе.
Чтобы избежать этой проблемы, вы всегда должны сравнивать результат функции strpos() с true или false с помощью топератора === или ! == (тождественное равенство и тождественное неравенство). Например:
<?php
$str = 'To do or not to do';
$position = strpos($str, 'To');
if ($position !== false) {
echo $position; // 0
} else {
echo 'Not found';
}
Функции stripos() и strripos() идентичны функциям strpos и стккзщы соответсвенно, за тем лишь исключением, что stripos() и strripos() не учитывают регистр при поиске.