Как найти координаты строковых совпадений в текстовой переменной ?

антигерой

Новичок
Как найти координаты строковых совпадений в текстовой переменной ?

Есть команда: strpos(); - Возвращает позицию первого совпадения паттерна в строке поиска.

Как можно найти СРАЗУ ВСЕ совпадения паттерна в строке ? Чтобы одним массивом возвращались все данные ?
 
>preg_match_all
Возвращает массив Совпадений, а не их Координат(позицию).

>Неужели написать цикл - такая большая проблема?
Написал, но есть умное высказывание:
Не преумножай сущностей, сверх необходимого.
 
антигерой
Возвращает массив Совпадений, а не их Координат(позицию).
Посмотрите ещё раз.
Только внимательно.
 
антигерой
Написал, но есть умное высказывание:
Не преумножай сущностей, сверх необходимого.
Тогда тебе придется отказаться и от preg_match_all, так как в ней тоже используются циклы.

Надо использовать тот инструмент, который позволит наиболее эффективно решить задачу, а не думать над тем, что цикл в циклическом алгоритме - это лишняя сущность.
 
>Посмотрите ещё раз. Только внимательно.

Ммм... Посмотрел. Внимательно. Цифирок с номером первой позиции паттерна нет. Есть Двуменрый массив, в одном содержит исходный паттерн без тегов - другой содержит полную строку совпадения. И всё. Вот...

Собсно через жопу я уже сделал, теперь просто интересно - можно ли это как-то попроще реализовать, одной-двумя командами.
 
антигерой
А почитать про preg_match_all в мануале Вы не пробовали? Только не частично, а целиком.
 
В детстве я пробовал выучить английский...

Не получилось.

>почитать про preg_match_all не частично, а целиком.

Пробовал. Не получилось.
 
Mr_Max
ты сегодня какой-то неконструктивный. Может лучше попробовать выучить английский еще раз? Лично я тоже долгое время его знал довольно плохо, потому что не был заинтересован. А потом я осознал, что без него никуда, и значительно поднял уроветь владения им за каких-то несколько месяцев.
 
Да, методом научного тыка сделал. Спасибо за подсказку - всё заработало (((-8
Надо было добавить флаг: PREG_OFFSET_CAPTURE

preg_match_all ( "/паттернт/i", $row->text, $arraymatch2, PREG_OFFSET_CAPTURE);

$arraymatch2[0][номер элемента-совпадения][1]
 
страшный человек
у него есть только два состояния:
"ничего не работает!"
и
"само получилось!"

функция программиста при этом остается неясной.
И это человек - венец природы...
 
Wicked
Да не в том дело.
Когда 3-ри раза говорят бестолку - это наводит на определённые выводы.
антигерой не в обиду, но сложилось такое мнение.
 
Сверху