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

антигерой

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

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

Как можно найти СРАЗУ ВСЕ совпадения паттерна в строке ? Чтобы одним массивом возвращались все данные ?
 

SiMM

Новичок
Неужели написать цикл - такая большая проблема?
 

антигерой

Новичок
>preg_match_all
Возвращает массив Совпадений, а не их Координат(позицию).

>Неужели написать цикл - такая большая проблема?
Написал, но есть умное высказывание:
Не преумножай сущностей, сверх необходимого.
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
антигерой
Возвращает массив Совпадений, а не их Координат(позицию).
Посмотрите ещё раз.
Только внимательно.
 

phprus

Moderator
Команда форума
антигерой
Написал, но есть умное высказывание:
Не преумножай сущностей, сверх необходимого.
Тогда тебе придется отказаться и от preg_match_all, так как в ней тоже используются циклы.

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

антигерой

Новичок
>Посмотрите ещё раз. Только внимательно.

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

Собсно через жопу я уже сделал, теперь просто интересно - можно ли это как-то попроще реализовать, одной-двумя командами.
 

Wicked

Новичок
антигерой
А почитать про preg_match_all в мануале Вы не пробовали? Только не частично, а целиком.
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
PREG_OFFSET_CAPTURE
 

антигерой

Новичок
В детстве я пробовал выучить английский...

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

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

Пробовал. Не получилось.
 

Wicked

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

антигерой

Новичок
Да, методом научного тыка сделал. Спасибо за подсказку - всё заработало (((-8
Надо было добавить флаг: PREG_OFFSET_CAPTURE

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

$arraymatch2[0][номер элемента-совпадения][1]
 

Фанат

oncle terrible
Команда форума
страшный человек
у него есть только два состояния:
"ничего не работает!"
и
"само получилось!"

функция программиста при этом остается неясной.
И это человек - венец природы...
 

Mr_Max

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