|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Artem Chuprina 2:5020/400 05 Dec 2002 17:18:06 To : "Serg" Subject : Re: Работа с HTML -------------------------------------------------------------------------------- Здравствуй, Serg. 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. S> Я конечно надеюсь, что до этого не дойдет:). Я впринципе уже написал S> небольшую подпрограмму на регэкспе, но не нравится она мне. чем-то. что-то в S> ней не так:). Об этом позже. Я бы с удовольствием воспользовался именно S> уже написанным классом, но более менее почитав доку на каждого из четырех не S> заметил ничего похожего на установку значений параметров. Там S> что-нибудь подобное есть? - если есть то где? То, что будет сервак грузить - S> это не важно, главное что б работало. А запускаться оно будет не очень часто S> - раз 50-100 за день. И тут у меня все даже с моей подпрограммой шло хорошо, S> пока не столкнулся с проблемой под названием textarea. Оказывается, у этой S> бяки, установка дефолтного значения производится не методом добавления S> параметра value='text', а метод прописывания текста между S> тэгами <textarea>TEXT</textarea>. Справятся ли эти классы с такой задачей? S> Если да, тогда буду читать доку на них пока не разберусь, как это сделать S> (если завешусь - не поминайте лихом:)). Hо пока я это не знаю, задам вопрос S> уже связанный с логикой регэкспов. Итак, как обычно.: есть код: $prdat='tjsrg S> <textarea name=desc>iojioertgj</textarea>'; @mas=$prdat=~/<textarea S> name=desc>.*<\/textarea>/gsi; print $mas[0]; Как думаете - что выведет? S> Правильно - 'tjsrg <textarea name=desc>iojioertgj</textarea>'. Теперь S> усложним задачу.: $prdat='tjsrg <textarea S> name=desc>iojioertgj</textarea>ggfg<textarea name="words">ggbbnn</textarea>gg S> hhtt'; my @mas=$prdat=~/<textarea name=desc>.*<\/textarea>/gsi; print S> $mas[0]; Как думает, что теперь выведет? Hе знаю, что думаете, но выведет: S> '<textarea name=desc>iojioertgj</textarea>ggfg<textarea S> name="words">ggbbnn</textarea>'. И как вы наверное догадались, я мечтаю, что S> б мой регэксп изменился так, что б вывела она то же что и в первом примере:). S> Как сделать? Hу а если по-русски - как указать ей, что делать .* до того S> момента, пока она не повстречает </textarea> на своем пути? Hе зная коду, не суйся к входу. В данном конкретном случае поможет дописывание ? к *. В более сложном - нет. -- Artem Chuprina Communiware.net RFC2822: <ran@ran.pp.ru>, FIDO: 2:5020/122.256, ICQ: 13038757 --- ifmail v.2.15dev5 * Origin: Leninsky 45 home network (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/14454f88ac5a2.html, оценка из 5, голосов 10
|