Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Как найти позицию подстроки в строке

Короткий ответ

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

<?php
 
var_dump(strpos('hello world', 'world'));

Результат:

int(6)

Ловушка нулевой позиции

Если подстрока стоит в начале, результат — 0, и условие if (strpos(...)) его не заметит. Сравнивайте с false:

<?php
 
$position = strpos('hello world', 'hello');
 
var_dump($position);
var_dump($position !== false);

Результат:

int(0)
bool(true)

Все вхождения

Ищите в цикле, каждый раз начиная после предыдущей находки:

<?php
 
$text = 'banana';
$positions = [];
$offset = 0;
 
while (($position = strpos($text, 'a', $offset)) !== false) {
    $positions[] = $position;
    $offset = $position + 1;
}
 
echo implode(', ', $positions);

Результат:

1, 3, 5

Функции из этого ответа

  • strpos — Находит позицию первого вхождения подстроки.
  • strrpos — Находит позицию последнего вхождения подстроки.
  • mb_strpos — Находит позицию первого вхождения подстроки.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.