|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Serg 2:5020/400 04 Dec 2002 22:37:38 To : Victor Wagner Subject : Re: Работа с HTML -------------------------------------------------------------------------------- Tue Dec 03 2002 18:02, Victor Wagner wrote to Artem Chuprina: VW>>> Копать в районе HTML::Parser. Hаиболее мощный и универсальный VW>>> HTML::TreeBuilder, но для этой задачи он немножко overkill. VW>>> Здесь HTML::Filter или HTML::TokeParser хватит. AC>> Я бы сказал, что для данной задачи достаточно медитации над perldoc AC>> perlre, пока не заметишь \s и ключ /i. VW> Вот я бы сказал, что ты не прав. Потому что там будет в одной html-ке VW> <input name="FOO" value="bar">, а в соседней <input value="bar" VW> name="FOO"> VW> А завтра дизайнер захочет, чтобы у инпутов с class="edit" значения VW> подставлялись, а с class="noedit" - нет, причем class он будет втыкать VW> в любое из трех возможных мест относительно name и value. Я конечно надеюсь, что до этого не дойдет:). Я впринципе уже написал небольшую подпрограмму на регэкспе, но не нравится она мне. чем-то. что-то в ней не так:). Об этом позже. Я бы с удовольствием воспользовался именно уже написанным классом, но более менее почитав доку на каждого из четырех не заметил ничего похожего на установку значений параметров. Там что-нибудь подобное есть? - если есть то где? То, что будет сервак грузить - это не важно, главное что б работало. А запускаться оно будет не очень часто - раз 50-100 за день. И тут у меня все даже с моей подпрограммой шло хорошо, пока не столкнулся с проблемой под названием textarea. Оказывается, у этой бяки, установка дефолтного значения производится не методом добавления параметра value='text', а метод прописывания текста между тэгами <textarea>TEXT</textarea>. Справятся ли эти классы с такой задачей? Если да, тогда буду читать доку на них пока не разберусь, как это сделать (если завешусь - не поминайте лихом:)). Hо пока я это не знаю, задам вопрос уже связанный с логикой регэкспов. Итак, как обычно.: есть код: $prdat='tjsrg <textarea name=desc>iojioertgj</textarea>'; @mas=$prdat=~/<textarea name=desc>.*<\/textarea>/gsi; print $mas[0]; Как думаете - что выведет? Правильно - 'tjsrg <textarea name=desc>iojioertgj</textarea>'. Теперь усложним задачу.: $prdat='tjsrg <textarea name=desc>iojioertgj</textarea>ggfg<textarea name="words">ggbbnn</textarea>gghhtt'; my @mas=$prdat=~/<textarea name=desc>.*<\/textarea>/gsi; print $mas[0]; Как думает, что теперь выведет? Hе знаю, что думаете, но выведет: '<textarea name=desc>iojioertgj</textarea>ggfg<textarea name="words">ggbbnn</textarea>'. И как вы наверное догадались, я мечтаю, что б мой регэксп изменился так, что б вывела она то же что и в первом примере:). Как сделать? Hу а если по-русски - как указать ей, что делать .* до того момента, пока она не повстречает </textarea> на своем пути? спасибо за внимание --- ifmail v.2.15dev5 * Origin: FidoNet Online - http://www.fido-online.com (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/16679d9a78676.html, оценка из 5, голосов 10
|