Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: извлечь html теги
Форумы портала PHP.SU » PHP » Регулярные выражения » извлечь html теги

Страниц (1): [1]
 

1. OrmaJever - 15 Июля, 2010 - 17:20:42 - перейти к сообщению
Помогите извлечь html теги со страницы. например надо взять весь тег <form > </form>
Первое что пришло в голову
CODE (htmlphp):
скопировать код в буфер обмена
  1. '#<form(.*)>(.*)</form>#i'

потом подумал так
CODE (htmlphp):
скопировать код в буфер обмена
  1. '#(?<=<form)(.*)>(.*)(?=</form>)#i'

но не могу понять какие символы надо экранизировать?
2. Champion - 15 Июля, 2010 - 18:05:33 - перейти к сообщению
#<form[^>]*>(.+?)<\/form>#msi
3. OrmaJever - 15 Июля, 2010 - 20:18:41 - перейти к сообщению
Спасибо! Все работает. Можешь в двух словах обьяснить что находит (.+?) и чем отличается от (.*) ?
4. Champion - 15 Июля, 2010 - 20:34:04 - перейти к сообщению
+ - 1 и больше имволов
* - 0 и больше.
+? - меняет жадность. Просто + сматчит до последнего </form, а нежадный + - до ближайшего
5. JustUserR - 16 Июля, 2010 - 01:23:52 - перейти к сообщению
OrmaJever пишет:
Что находит (.+?) и чем отличается от (.*) ?
Данные квантификаторы имеют разную жадность и отличаются между собой порядком поиска по шаблону - при проходе по регулярному выражению жадная версия квантификатора захватывает максимальное число символов которое может - а нежадная захватывает минимально--разрешенное для свой формы число символов Тем не менее обе версии квантификаторов несмортря на свои предпочтения все-таки желают совпадения всего шаблона больше чем собственного - и поэтому при дальнейшем проходе жадный квантификатор по очереди возвращает по одному символу а нежадный напротив забирает Таким образом в процессе отдачи и получения символов жадный и нежадный квантификатор соответственно действуют с разных сторон - а искомое совпадение при просмотре с разных сторон как правило получается разным

 

Powered by ExBB FM 1.0 RC1