Как найти позицию подстроки в строке
Короткий ответ
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