Jump to content


Photo

Pegar O Que Tiver No Meio


  • Faça o login para participar
6 replies to this topic

#1 Gabriel

Gabriel

    CGI & PHP até Morre!!!!

  • Usuários
  • 573 posts
  • Sexo:Não informado
  • Localidade:Santo Andre-SP
  • Interesses:http://www.divulgue-me.com

Posted 19/04/2005, 16:16

Fala pessoal
seguinte
tenho o seguinte HTML:
<title>Meu site</title>
<link rel="stylesheet" href="style.css">
         <table width="275" border="0" cellspacing="3" cellpadding="4">

            <tr> 
               <td class="index1" width="120" nowrap>Espaço utilizado</td>
               <td class="index2">7.83 Megabytes</td>
            </tr>

            <tr> 
               <td class="index1" width="120" nowrap>Nº de e-mails</td>
               <td class="index2">20 e-mails</td>
            </tr>
         </table>

eu gostaria de um code que pegasse o que tiver entre o <td></td> e colocasse numa tabela
ex:
$espaco = "7.83 Megabytes";
$email = "20 e-mails";

eu tentei o seguinte codigo
#!/usr/bin/perl
print "Content-type: text/html\n\n";


open(BD,"teste.htm") || print("Arquivo não existe!");
while(<BD>){
if (/<td class=\"index1\" width=\"120\" nowrap>Espaço utilizado<\/td>/) {($esp) = $_ =~ /<td class=\"index1\" width=\"120\" nowrap>Espaço utilizado<\/td>(.*?)<\/td>/; }
if (/<td class=\"index1\" width=\"120\" nowrap>Nº de e-mails<\/td>/) {($email) = $_ =~ /<td class=\"index1\" width=\"120\" nowrap>Nº de e-mails<\/td>(.*?)<\/td>/; }
}
close(DB);


print "Usados: $esp";
print " <br>\n\n";
print "E-mail: $titulo";
Mais nao funciona
alguem pode me ajudar???

flw

Edição feita por: Gabriel, 19/04/2005, 16:20.

Editado pela equipe Forum Wmo, favor ler as regras.

#2 prix

prix

    Duracell: E Duram, Duram, Duram...

  • Usuários
  • 562 posts
  • Sexo:Não informado
  • Interesses:keep walking ...
    jonny walker

Posted 19/04/2005, 22:25

bom utilizando:
foreach $linhas (@dados) {
$linhas =~ s/<[a-zA-Z0-9=" ]+>//g;
$linhas =~ s/<\/[a-zA-Z0-9="]+>//g;
$linhas =~ s/\s+//;
print "$linhas\n";
}

voce consegue a impressao sem os inicios <> </> acho q dai da pra vc fazer o resto.

print join'',(reverse  map{/d([a-z])d/}split/W/,'$5x6@314&60f%3i4#moo^1r2#moo^1p2')," ", pack ("B*",'01110000011001010111001001101100')," ", pack ("B*",'011011010110111101101110011010110110010101111001'), "n";
sleep 5;


E-Mails, topicos ou mensagens privadas não serão respondidas a menos que eu considere uma relevancia/necessidade na mesma.

#3 ScriptsNan

ScriptsNan

    Turista

  • Usuários
  • 45 posts
  • Sexo:Não informado
  • Localidade:Brasilia DF

Posted 19/04/2005, 23:19

bom utilizando:
foreach $linhas (@dados) {
$linhas =~ s/<[a-zA-Z0-9=" ]+>//g;
$linhas =~ s/<\/[a-zA-Z0-9="]+>//g;
$linhas =~ s/\s+//;
print "$linhas\n";
}

voce consegue a impressao sem os inicios <> </> acho q dai da pra vc fazer o resto.

$html = "<td>400 MB</td>";
while ($html =~ m#<td>(.*?) (.*?)</td>#gsi) {
$tamanho = $1;
$bytes = $2;
}

print "$tamanho $bytes";

#4 prix

prix

    Duracell: E Duram, Duram, Duram...

  • Usuários
  • 562 posts
  • Sexo:Não informado
  • Interesses:keep walking ...
    jonny walker

Posted 20/04/2005, 11:30

pode se fazer assim tambem:
($conteudo) = ( $linhas =~ />(.*?)</ );

ou
($conteudo) = ( $linhas =~ />(.*?)<\/td>/ );

ele ira pegar o q tiver entre ><

creio q o segundo eh melhor pois restringe ao q finaliza com </td>

vc pode adicionar /i tb se preciso.

Edição feita por: prix, 20/04/2005, 11:33.

print join'',(reverse  map{/d([a-z])d/}split/W/,'$5x6@314&60f%3i4#moo^1r2#moo^1p2')," ", pack ("B*",'01110000011001010111001001101100')," ", pack ("B*",'011011010110111101101110011010110110010101111001'), "n";
sleep 5;


E-Mails, topicos ou mensagens privadas não serão respondidas a menos que eu considere uma relevancia/necessidade na mesma.

#5 Gabriel

Gabriel

    CGI & PHP até Morre!!!!

  • Usuários
  • 573 posts
  • Sexo:Não informado
  • Localidade:Santo Andre-SP
  • Interesses:http://www.divulgue-me.com

Posted 20/04/2005, 12:51

ai renan, o seu nao iria funcionar, pois o html esta em mais de uma linha

eu precisava de um code que verificasse da 1 linha até chegar ao </td>

sacou?
Editado pela equipe Forum Wmo, favor ler as regras.

#6 jgcl

jgcl

    João Gabriel C. Laass, Serra/ES

  • Usuários
  • 559 posts
  • Sexo:Não informado
  • Localidade:Serra / ES
  • Interesses:Tudo!

Posted 20/04/2005, 17:44

while pra pegar o q tiver entre as tags??
não é necessário isso...

alguns exemplos...

$a = "Eu sou lindo";
($B) = ($a =~ "Eu (.*?) lindo");
print $b;

($tag) = $a =~ /\[tag\](.*?)\[\/tag\]/gi;

$teste =~ /^(\S+) (sou) (\S+)/;
$capt = $2;

$endereco=~ m#<VLOG_NO_DNEC>\s*(.*?)\s*</VLOG_NO_DNEC>#is;

flw
João Gabriel
Site >> joaogabriel.org
CGiClube.net >> http://www.cgiclube.net
Vitória Perl Mongers >> http://vitoria.pm.org

#7 ScriptsNan

ScriptsNan

    Turista

  • Usuários
  • 45 posts
  • Sexo:Não informado
  • Localidade:Brasilia DF

Posted 26/05/2005, 19:19

ai renan, o seu nao iria funcionar, pois o html esta em mais de uma linha

eu precisava de um code que verificasse da 1 linha até chegar ao </td>

sacou?

Nao tem nada a ver gabriel. ele pegaria mesmo q tivesse infinitas linhas ;)
[]s!




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq