(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
?>
Замечание: Функция безопасна для обработки данных в двоичной форме.