[SP-pm] Ajuda!

Igor Sutton Lopes igor.sutton em gmail.com
Terça Abril 17 19:01:50 PDT 2007


Oi Daniel,

On Apr 17, 2007, at 8:45 PM, Daniel Projetos wrote:

> Opa!
>
> Um olá para todos da lista, snift... não tive boas vindas calorosas  
> hehehehe
> e já estou na lista a mais de 1 mês só de olho! Meu nome é Daniel  
> Bunduki,
> programa Perl para uso na web mesmo e estou com a seguinte dúvida:
>
> Estou usando: $descricoes[$x] =~ s/<([^>]|\n)*>//g;
> Isso faz com que todas as tags em HTML sejam TIRADAS da minha variável
> (lista simples).
>
> Gostaria de antes disto, como se trata apenas de um tag: <img src=/ 
> xxx ...
> ... ... >.
> Coloca-lá em outra variável.
>
> Resumindo, uma expressão regular onde consiga tirar apenas a TAG  
> HTML para
> outra variável...

Poderia perguntar-te por que razão estás usando expressões regulares  
para parsing de HTML? Quantas vezes repetimos a mesma coisa?! Nelson,  
colé o mantra prá isso :-D?

Repitamos: "Não devemos fazer parser de HTML com expressões  
regulares, não devemos fazer parser de HTML com expressões regulares,  
não devemos fazer parser de..."

Para fazer isso de uma maneira fácil, podes utilizar o  
HTML::TreeBuilder::XPath:

<code>
use strict;
use warnings;

use HTML::TreeBuilder::XPath;

my $tree = HTML::TreeBuilder::XPath->new;

$tree->parse_file( \*DATA );

my @imgs = $tree->findnodes('//img');

for my $img (@imgs) {
     print $img->attr('src'), $/;
}

__DATA__
<html>
<img src="teste1.gif" />
<img src="teste2.gif" />
</html>

</code>

--
Igor Sutton
igor.sutton em gmail.com



-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://mail.pm.org/pipermail/saopaulo-pm/attachments/20070418/dadff5a6/attachment.html 
-------------- Próxima Parte ----------
Um anexo não texto foi limpo...
Nome  : PGP.sig
Tipo  : application/pgp-signature
Tam   : 186 bytes
Descr.: This is a digitally signed message part
Url   : http://mail.pm.org/pipermail/saopaulo-pm/attachments/20070418/dadff5a6/attachment.bin 


Mais detalhes sobre a lista de discussão SaoPaulo-pm