strpos

(PHP 4, PHP 5, PHP 7, PHP 8)

strposНаходит позицию первого вхождения подстроки

Описание

strpos(string $haystack, string $needle, int $offset = 0): int|false

Функция находит позицию первого вхождения подстроки 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

?>

Примечания

Замечание: Функция безопасна для обработки данных в двоичной форме.

Смотрите также

  • stripos() - Возвращает позицию первого вхождения подстроки без учёта регистра
  • str_contains() - Определяет, содержит ли строка заданную подстроку
  • str_ends_with() - Проверяет, заканчивается ли строка заданной подстрокой
  • str_starts_with() - Проверяет, начинается ли строка с заданной подстроки
  • strrpos() - Возвращает позицию последнего вхождения подстроки в строке
  • strripos() - Возвращает позицию последнего вхождения подстроки без учёта регистра
  • strstr() - Находит первое вхождение подстроки
  • strpbrk() - Ищет в строке любой символ из набора
  • substr() - Возвращает подстроку
  • preg_match() - Выполняет проверку на соответствие регулярному выражению