﻿<?xml version='1.0' encoding='UTF-8'?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>Релиб / Веб-программирование / Perl  / Помогите выделить тэги в Perl / Latest Posts</title><generator>InstantForum.NET v4.1.4</generator><description>Релиб</description><link>http://www.relib.com/forums/</link><webMaster>robot@relib.com</webMaster><lastBuildDate>Wed, 08 Oct 2008 11:57:55 GMT</lastBuildDate><ttl>20</ttl><item><title>RE: Помогите выделить тэги в Perl</title><link>http://www.relib.com/forums/Topic729063-18-1.aspx</link><description>Всем большое спасибо, тему можно закрывать, свою проблему уже решил :))</description><pubDate>Sat, 27 Oct 2001 21:51:00 GMT</pubDate><dc:creator>DarkPerl</dc:creator></item><item><title>RE: Помогите выделить тэги в Perl</title><link>http://www.relib.com/forums/Topic729063-18-1.aspx</link><description>2spartak&lt;BR&gt;&lt;BR&gt;это пример исключтельно для того варианта который DarkPerl предложил.&lt;BR&gt;:)&lt;BR&gt;&lt;BR&gt;2DarkPerl &lt;BR&gt;смотря для чего тебе надо их вырезать? если тебе надо просто удалить из текста все теги - то могу посоветовать свой собственный парсер:&lt;BR&gt;[code]&lt;BR&gt;	@fval=split(/&amp;amp;/,$buf);&lt;BR&gt;	foreach $i (0 .. $#fval){&lt;BR&gt;		($name,$val)=split (/=/,$fval[$i],2);&lt;BR&gt;		$val =~ tr/+/ /;&lt;BR&gt;  		$val =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack(&amp;quot;C&amp;quot;, hex($1))/eg;&lt;BR&gt;   		$val =~ s/&amp;lt;!--(.|&lt;br&gt;)*--&amp;gt;//g;&lt;BR&gt; 		$val =~ s/&amp;lt;([^&amp;gt;]|&lt;br&gt;)*&amp;gt;//g;&lt;BR&gt;		$name=~tr/+/ /;&lt;BR&gt;		$name=~ s/%(..)/pack(&amp;quot;c&amp;quot;,hex($1))/ge;&lt;BR&gt;		if (!defined($field{$name})) {&lt;BR&gt;			$field{$name}=$val;&lt;BR&gt;		}&lt;BR&gt;		else {&lt;BR&gt;			$field{$name} .= &amp;quot;,$val&amp;quot;;&lt;BR&gt;		}&lt;BR&gt;	}&lt;BR&gt;&lt;BR&gt;[/code]&lt;BR&gt;здесь текст перекодируется если в нем есть символы вида %XX (так русский в урлах передается), и вырезаются все теги. &lt;BR&gt;Резка тегов более-менее умная и почти всегда устраивает, но вообще для этих целей существует модуль LWP. Это глобальный набор модулей на все случаи жизни для веб-програминга. В него входит модуль HTML::Parser который занимается именно разбором HTML. У него это получается намного лучше.&lt;BR&gt;&lt;BR&gt;А вообще вопрос написания парсера, многими ОЧЕНЬ недооценивается! Резать абсолютно правильно очень и очень непросто... Вот только некоторые примеры вполне нормального HTML, с которыми возникают траблы почти у всех...&lt;BR&gt;Пример 1:&lt;BR&gt;[code]&lt;BR&gt;&amp;lt;img src=&amp;quot;1.gif&amp;quot; alt=&amp;quot;A &amp;gt; B&amp;quot;&amp;gt;&lt;BR&gt;[/code]  &lt;BR&gt;Пример 2:&lt;BR&gt;[code]&lt;BR&gt;&amp;lt;script&amp;gt;if (a&amp;lt;b &amp;amp;&amp;amp; b&amp;gt;a) {}&amp;lt;/script&amp;gt;&lt;BR&gt;[/code]&lt;BR&gt;Пример 3: &lt;BR&gt;[code]&lt;BR&gt;&amp;lt;!-- &amp;lt;Комментарий&amp;gt; --&amp;gt;&lt;BR&gt;[/code] &lt;BR&gt;&lt;BR&gt;а теперь все дружно проверили, как у них реагируют ИХ обработчики на такой код...:)</description><pubDate>Sat, 27 Oct 2001 16:50:00 GMT</pubDate><dc:creator>-Dark-</dc:creator></item><item><title>RE: Помогите выделить тэги в Perl</title><link>http://www.relib.com/forums/Topic729063-18-1.aspx</link><description>$t = &amp;quot;&amp;lt;OS&amp;gt;&amp;lt;Linux&amp;gt;&amp;lt;/OS&amp;gt;&amp;quot;;&lt;BR&gt;print $t,&amp;quot;&lt;br&gt;&amp;quot;;&lt;BR&gt;if ($t =~ /(&amp;lt;\w+&amp;gt;)(&amp;lt;\w+&amp;gt;)(&amp;lt;\/\w+&amp;gt;)/) {&lt;BR&gt;	print $1, &amp;quot; &amp;quot;,$2, &amp;quot; &amp;quot;, $3;&lt;BR&gt;}</description><pubDate>Fri, 19 Oct 2001 10:30:00 GMT</pubDate><dc:creator>spartak0</dc:creator></item><item><title>Помогите выделить тэги в Perl</title><link>http://www.relib.com/forums/Topic729063-18-1.aspx</link><description>Помогите плиз решить проблему. Допустим в .txt-файле есть строка типа [code]&amp;lt;OS&amp;gt;&amp;lt;Linux&amp;gt;&amp;lt;/OS&amp;gt;[/code]&lt;BR&gt;С помощью каких функций или кода можно разбить эту строку на подстроки вида &amp;lt;OS&amp;gt;, &amp;lt;Linux&amp;gt; и &amp;lt;/OS&amp;gt;</description><pubDate>Thu, 18 Oct 2001 19:21:00 GMT</pubDate><dc:creator>DarkPerl</dc:creator></item></channel></rss>