Функция strpos
Функция strpos
возвращает позицию
первого вхождения подстроки в другую строку
или false
, если подстрока не найдена.
Первым параметром функция принимает строку,
в которой осуществляется поиск, вторым параметром
- подстроку, которую следует искать.
По умолчанию функция ищет с начала строки до первого совпадения. Начало поиска можно регулировать третьим необязательным параметром - если он задан, то поиск начнется не с начала строки, а с указанного места.
Есть также функция stripos
, которая
делает тоже самое, но без учета регистра.
Синтаксис
strpos(string $haystack, string $needle, int $offset = 0): int|false
Пример
В данном примере функция вернет позицию первого
символа 'с'
. Он занимает позицию 2
,
так как отсчет начинается с 0
:
<?php
echo strpos('abcde abcde', 'c');
?>
Результат выполнения кода:
2
Пример
В данном примере задан третий параметр и
поэтому поиск начнется с третьей позиции,
в этом случае функция найдет уже второй символ
'c'
и выведет его позицию - 8
:
<?php
echo strpos('abcde abcde', 'c', 3);
?>
Результат выполнения кода:
8
Пример
Если подстрока не будет найдена - то функция
вернет false
. Если же строка стоит
в начале, то функция вернет 0
.
Это может быть проблемой при сравнении
через короткую форму условия:
<?php
if (strpos('http://site.ru', 'http://')) {
echo '+++';
} else {
echo '---';
}
?>
Результат выполнения кода (не такой, как мы ожидали):
'---'
Пример
Выполним правильную проверку на начало строки:
<?php
if (strpos('http://site.ru', 'http://') === 0) {
echo '+++';
} else {
echo '---';
}
?>
Результат выполнения кода:
'+++'
Смотрите также
-
функцию
strrpos
,
которая возвращает позицию последнего вхождения подстроки -
функцию
str_contains
,
которая проверяет вхождение символа в строку -
функцию
str_starts_with
,
которая проверяет начало строки -
функцию
str_ends_with
,
которая проверяет конец строки -
функцию
array_search
,
которая осуществляет поиск по массиву