Регулярка для вырезания повторяющихся последовательностей

kolchakA
На сайте с 19.06.2010
Offline
226
675

Вот код:


<p class="txt"><strong>Text</strong> <a href="page1.html">Категория1</a> <a href="/page2.html">Категория2</a> <br>

из него требуется вырезать одной регуляркой несколько значений:

Категория1

Категория2

Регулярку такую использую:

#<p class="txt"><strong>.*?</strong>.*?<a.*?>(.*?)</a>.*?<br>#ims

Но вырезается только Категория1

Как сделать чтобы вырезались обе? Обратите также внимание, что категорий может быть разное количество в коде (от 1 до 10 скажем). Нужно чтобы регулярка в независимости от количества все получала.

Автоматизация для SEO : подключение API, пайпланы из нескольких сервисов, AI генерация контента
[umka]
На сайте с 25.05.2008
Offline
456
#1

Вам поможет функция preg_match_all()

(если речь идёт о php)

Лог в помощь!
kolchakA
На сайте с 19.06.2010
Offline
226
#2
'[umka:
;8315717']Вам поможет функция preg_match_all()
(если речь идёт о php)

ну так именно ее и юзаю. А она возвращает только одно вхождение (первое получается), например:

Категория1, хотя по идее должно все возвращать

L
На сайте с 07.12.2007
Offline
351
#3
kolchakA:
ну так именно ее и юзаю. А она возвращает только одно вхождение (первое получается), например:
Категория1, хотя по идее должно все возвращать

Для preg_math_all не надо хвосты до и после, попробуйте: #<a.*?>(Категория\d+)</a>#ims

Хвостики до и после нужны для preg_replace.

kolchakA
На сайте с 19.06.2010
Offline
226
#4
Ladycharm:
Для preg_math_all не надо хвосты до и после, попробуйте: #<a.*?>(Категория\d+)</a>#ims

да в том то и проблема, что это я просто показал участок кода - а если я так буду со всей страницы резать - то у меня все анкоры сохранятся)))

[umka]
На сайте с 25.05.2008
Offline
456
#5
kolchakA:
ну так именно ее и юзаю. А она возвращает только одно вхождение (первое получается), например:
Категория1, хотя по идее должно все возвращать

Так вот этот кусок не повторяется:

<p class="txt"><strong>.*?</strong>

Функция выводит всё, что полностью соответствует шаблону.

[umka] добавил 08.01.2011 в 15:02

Значит нужно действовать в два этапа.

Этап 1. Из всей страницы выдрать кусок со списком категорий.

Этап 2. С помощью preg_match_all выдрать повторяющиеся ссылки.

kolchakA
На сайте с 19.06.2010
Offline
226
#6
'[umka:
;8315860']Так вот этот кусок не повторяется:
<p class="txt"><strong>.*?</strong>

Функция выводит всё, что полностью соответствует шаблону.

[umka] добавил 08.01.2011 в 15:02
Значит нужно действовать в два этапа.
Этап 1. Из всей страницы выдрать кусок со списком категорий.
Этап 2. С помощью preg_match_all выдрать повторяющиеся ссылки.

да уже так и сделал, просто думал как то все таки можно одной регуляркой)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий