ссылка на подмаску в регулярном выражении

12
[Удален]
889

В общем чего-то я не догоняю.

Есть выражение

<([a-z]+)(\s[^>]*)?>(.*)<\/\1> - по идее оно должно извлекать из текста все теги (ну по крайней мере <html>...</html> точно должен извлечь

Есть исходный html-файл.

я проверил на pcre.ru - т.е. через яваскриптовый интерпретатор регулярок - все работает.

Когда пытаюсь повторить в пхп через preg_match - получаю пустой массив.

В чем может быть дело?

ewg777
На сайте с 04.06.2007
Offline
225
#1

Вычисление регулярок

Возникла ошибка: Unknown modifier ']'
[Удален]
#2

спасибо, проверить то я и сам могу. Вы просто забыли заключить регулярку в ограничители (например |), а без этого он слеши за них принимает. Если это сделать, то он пишет совпадений не найдено.

что еще интересней, цитата из мануала


Таким образом шаблон (sens|respons)e and \1ibility соответствует "sense and sensibility", "response and responsibility", но не "sense and responsibility".


preg_match_all("/(sens|respons)e and \1ibility/is","sense and sensibility, response and responsibility, sense and responsibility",$out);
print_r($out);

дает нам Array ( [0] => Array ( ) [1] => Array ( ) )

ewg777
На сайте с 04.06.2007
Offline
225
#3
neolord:
спасибо, проверить то я и сам могу. Вы просто забыли заключить регулярку в ограничители (например |), а без этого он слеши за них принимает. Если это сделать, то он пишет совпадений не найдено.

Всё ок.

(10)

T
На сайте с 24.07.2008
Offline
145
#4

я бы сделал так:

preg_match_all('|<([a-zA-Z0-9]+)[^>]*?>(.*)<\/\1>|', $content, $matches);

не понятно только зачем это делать

[Удален]
#5

Tempter, в тегах не бывает цифр

ewg777, да, я допер, перед ссылкой на подмаску надо ставить два слеша. Остальное экранирование не нужно. Нелогично конечно.

<([a-z]+)(\s[^>]*)?>(.*)<\/\\1> вот такой вариант рабочий

T
На сайте с 24.07.2008
Offline
145
#6
neolord:
Tempter, в тегах не бывает цифр

<h1..2..3> не слышали о таких?

[Удален]
#7

оу, и правда, забыл =)

Но в любом случае мне нужны не совсем те теги... ;)

T
На сайте с 24.07.2008
Offline
145
#8

ну бывает )))

а если не секрет какой смысл несёт эта задача? :)))

ewg777
На сайте с 04.06.2007
Offline
225
#9
Tempter:
ну бывает )))
а если не секрет какой смысл несёт эта задача? :)))

Шаблонизатор, видимо, творит.

[Удален]
#10

в яблочко

кстати можно обойтись одним слешом но взять строчку в одинарных кавычках. видимо \1 что-то означает для строкового препроцессора php

12

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