Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Perl: Общие вопросы > Как вычленить тело связанных HTML тегов ? |
Автор: Valder 19.4.2008, 00:26 | ||
Есть HLML код типа с кучей комбо-боксов подобных этому:
Хочу на с помощью рег. выражений вычленить тело для имени каждого SELECT-a (н-р этот: category) и узнать соответственно значение. Устал биться с оператором поиска ... подскажите должны быть какая конструкция. СПАСИБО. |
Автор: arto 19.4.2008, 00:54 |
perldoc HTML::Parser perldoc HTML::TokeParser или выделите <select>...</select>, затем внутренности. но это менее правильно. |
Автор: tolkien 19.4.2008, 01:03 |
Второй способ намного лучше первого. Он быстрее, меньше жрет ресурсов и работает везде. А это монстр HTML:Paraser нужен только если вы свои браузер пишете и не хотите по каким либо причинам писать собственный Parser. |
Автор: Valder 19.4.2008, 01:20 | ||
подскажите код ... который бы выбрал <select> ... name=ZZZZ .... </select> Пробовал что-то типа такого:
Выбирает все до конца текста |
Автор: tolkien 19.4.2008, 01:53 |
Если тебе нужен атрибут name в теге select делай так Выбрать сначала тег например так if ($s =~ m/<select ([^>]+)>/) { my $body_select = $1; if ($body_select =~ m/\bname\s*=\s*['"]?([^'"\s]+)/) { $name = $1; } } |
Автор: Valder 19.4.2008, 02:49 |
Имя ищется вообще одной строкой, без лишних телодвижений ... Нужно выбрать все теги для тела данного SELECT-a. |
Автор: amg 19.4.2008, 08:35 | ||
Valder, самому парсить html не рекомендуется - это сложно, ненадежно и получется громоздкий малопонятный код. По возможности используйте модули, для этого предназначенные, например, те, на которые указал arto. Если же парсите сами, лучше не пытаться воткнуть все в одну регулярку, а действовать примерно так, как предложил tolkien.
|