(PHP 4, PHP 5, PHP 7, PHP 8)
strpos — Находит позицию первого вхождения подстроки
Функция находит позицию первого вхождения подстроки
needle
в строку haystack
.
haystack
Строка, в которой выполняется поиск.
needle
Строка, которую будет искать функция.
До PHP 8.0.0, если параметр needle
— не строка,
он преобразовывается в целое число и трактуется как код символа.
Это поведение устарело с PHP 7.3.0 и полагаться на него крайне не рекомендуется.
В зависимости от предполагаемого поведения,
параметр needle
должен быть либо явно приведён к строке,
либо должен быть выполнен явный вызов функции chr().
offset
Функция начнёт поиск с заданного количества символов с начала строки, если параметр указали. При отрицательном значении функция будет отсчитывать позицию начала поиска с конца строки.
Функция возвращает позицию искомой строка относительно начала строки haystack
независимо от значения параметра offset
.
Обратите также внимание, что позиция строки отсчитывается с 0
, а не с 1
.
Функция возвращает false
, если не нашла строку.
Функция
возвращает как логическое значение false
,
так и нелогическое значение, которое приводится к false
.
Прочитайте раздел
«Логический тип»,
чтобы получить дополнительную информацию.
Используйте оператор ===
для проверки значения, которое возвращает функция.
Версия | Описание |
---|---|
8.0.0 |
Параметр needle теперь разрешает пустую строку.
|
8.0.0 |
Функция больше не поддерживает передачу целого числа (int) в параметр needle .
|
7.3.0 |
Передача целого числа (int) в параметр needle устарела.
|
7.1.0 |
Добавили поддержку отрицательных значений параметром offset .
|
Пример #1 Пример строго сравнения значений оператором ===
<?php
$mystring = 'abc';
$findme = 'a';
$pos = strpos($mystring, $findme);
// Обратите внимание, что значения сравниваются оператором ===. Оператор == не будет работать
// как ожидается, поскольку позиция символа «a» — первого по счёту символа — равнялась 0.
if ($pos === false) {
echo "Функция не нашла подстроку «{$findme}» в строке «{$mystring}»";
} else {
echo "Функция нашла подстроку «{$findme}» в строке «{$mystring}»";
echo " в позиции $pos";
}
?>
Пример #2 Использование !==
<?php
$mystring = 'abc';
$findme = 'a';
$pos = strpos($mystring, $findme);
// Оператором !== тоже можно пользоваться. Оператор != не будет работать как
// ожидается, поскольку позиция символа «a» равна 0. Инструкция (0 != false) оценивается
// как false.
if ($pos !== false) {
echo "Функция нашла подстроку «{$findme}» в строке «{$mystring}»";
echo " в позиции {$pos}";
} else {
echo "Функция не нашла подстроку «{$findme}» в строке «{$mystring}»";
}
?>
Пример #3 Использование смещения
<?php
// Игнорируем символы до значения смещения, а затем находим необходимый символ
$newstring = 'abcdef abcdef';
$pos = strpos($newstring, 'a', 1); // $pos = 7, а не 0
?>
Замечание: Функция безопасна для обработки данных в двоичной форме.