Функция strpos в PHP: определение позиции подстроки

Функция strpos() в PHP - одна из самых используемых при обработке данных строкового типа. Она позволяет определить позицию, начиная с которой в исходную строку входит искомая подстрока. При этом для получения адекватного результата следует учитывать ряд тонкостей.

Входные и выходные параметры

В общем виде синтаксис функции PHP strpos() выглядит следующим образом:

mixed strpos (string $string , mixed $substring[, int $offset = 0 ] )

На вход принимаются два обязательных аргумента и один необязательный:

  • Исходная строка - $string, в которой и будет произведен поиск.
  • Искомая подстрока - $substring. Данный параметр имеет тип mixed. Это означает, что кроме строкового типа данных, функция может принять любой другой. В этом случае аргумент будет преобразован в целое число и обработан, как символьный код.
  • Необязательный параметр, определяющий смещение - $offset. По умолчанию поиск производится с самого начала строки $string, а смещение равно 0. Если определить отрицательное смещение, оно будет отсчитываться с конца строки.

Функция PHP strpos() возвращает позицию, начиная с которой $substring входит в $string. Если таких вхождений несколько, будет возвращена только позиция первого из них.


Если совпадений нет, на выходе будет булево значение false.

Особенности работы

При поиске позиции подстроки важно учитывать, что нумерация символов начинается с нуля. Следовательно, 0 - одно из корректных возвращаемых значений.

При нестрогом сравнении 0 приводится к логическому типу, превращается в false и может быть воспринят как отсутствие вхождений. Поэтому очень важно использовать строгое равенство (===), учитывающее тип сравниваемых величин.

Кроме того, strpos() - пример PHP-функции, зависимой от регистра символов.

Определение позиции подстроки в строке

Примеры использования

Пример 1. Простое вхождение. Требуется найти позицию, на которой подстрока key входит в строку monkeys.

<?php    $string = 'monkeys';  $substring = 'key';    $result = strpos($string, $substring);    // Значение $result - 3    ?>    

Пример 2. Отсутствие вхождений. Если изменить искомую строку на KEY, функция PHP strpos() не обнаружит совпадений, так как является регистрозависимой. Результатом будет булево значение false.


<?php    $string = 'monkeys';  $substring = 'KEY';    $result = strpos($string, $substring);  echo($result === false);    ?>

Пример 3. Вхождение на нулевой позиции. Важно использовать строгое равенство, проверяя результат работы функции, иначе можно получить некорректный результат.

<?php    $string = 'lifehack';  $substring = 'life';    $result = strpos($string, $substring);    if (!$result) {    echo 'Нет вхождений';  }    if ($result == false) {    echo 'Нет вхождений';  }    if ($result === false) {    echo 'Нет вхождений';  }  ?>

Первые две проверки определят отсутствие вхождений, несмотря на то, что подстрока life входит в исходную строку lifehack.

Пример 4. Смещение начальной позиции с помощью параметра $offset.

<?php    $string = 'love-and-love';  $substring = 'love';    $result1 = strpos($string, $substring);  $result2 = strpos($string, $substring, 3);    echo $result1; // 0  echo $result2; // 9  ?>

После установки смещения, равного 3, поиск начинается с символа "e".

Язык программирования PHP

Похожие функции

Для определения позиции подстроки в PHP существуют и другие функции, отличающиеся от strpos():

  • stripos() - не учитывает регистр символов;
  • strrpos() - определяет последнее вхождение;
  • strripos() - ищет последнее вхождение и не учитывает регистр.

PHP: работа со строками. Строковые функции PHP
Статья рассчитана на начинающих изучать PHP: в ней описаны самые распространенные функции, связанные с работой со строками.
далее
Практика PHP: сравнение строк
Хороший алгоритм сравнения строк имеет важное значение. Хотя к обработке информации в ее естественном виде языки программирования еще не пришли, правильное и эффективное использование имеющегося арсенала функций сравнения строк имеет значение.
далее
Namespace PHP: пример. Узнаем как использовать пространства имен в ...
Пространство имен всегда существовало как часть алгоритма и всегда было «глобальным». В ходе разработки больших проектов, когда создается множество файлов скриптов, многочисленные разработчики могут использовать одинаковые имена, что ставит любой ...
далее
Функция языка SQL SUBSTRING
При работе с базами данных приходится регулярно некоторым образом обрабатывать полученную информацию. Помогает в этом использование различных функций языка SQL. SUBSTRING является одной из таковых.
далее
PHP (регулярное выражение) - определение. Примеры и проверка ...
Многие начинающие Интернет-разработчики в качестве своего первого языка программирования выбирают PHP. Регулярное выражение является одним из самых мощных средств обработки текста и реализует невозможные на первый взгляд задачи.
далее
Что это - объекты типа str в Python
Строки str в Python являются встроенным типом данных. Это неизменяемые последовательности, которые обычно используются программистами для записи текстовой информации. Литералы строк заключаются в двойные или одинарные кавычки.
далее
Что это - объекты типа str в Python
PHP: массив в массиве. Поиск в массиве PHP
Информация всегда имеет структуру, описание которой набором переменных не всегда оправдано. Массивы значительно упрощают обработку информации, делают компактным код, понятным алгоритм.
далее
PHP: массив в массиве. Поиск в массиве PHP
Delphi pos - строки в Паскале
В Делфи, как и в любом другом языке программирования можно работать со строками. Существует множество функций для работы с ними. В этой статье мы разберём самые популярные в Delphi строковые функции.
далее
Delphi pos - строки в Паскале
Программирование в Python. Работа со строками
В повседневной жизни программисту нужно решать массу задач. Для этих целей идеально подходит язык Python. Резервное копирование, создание игры для Android или для Windows, чтение и сохранение писем из электронной почты – не самые сложные задачи для опытного программиста. А вот для начинающих изучать Python (работу со строками, списками, файлами) покажется сказкой, поскольку методы и функции каждого типа данных облегчают жизнь пользователю
далее
Программирование в Python. Работа со строками
POST, GET: чем отличаются запросы друг от друга
Методы GET и POST в HTTP и HTTPS — два самых популярных метода, используемых для передачи данных с клиента на сервер с использованием протокола HTTP (протокол передачи гипертекста). И GET, и POST могут использоваться для отправки запроса и получения ответа, но между ними существует значительная разница.
далее
POST, GET: чем отличаются запросы друг от друга