Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 

Busqueda en una cadena

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Intermedio
Mensaje Jue Nov 17, 2005 4:00 pm
julruiz
Perlero Nuevo
Perlero Nuevo
Registrado: 11 Sep 2005
Mensajes: 18
Busqueda en una cadena Responder citando

Hola a todos....

Tengo la siguiente línea

document.write('<A HREF="http://ad.doubleclick.net/jump/co.terra.enter/home728;ga=serv_co;niv=0;abr=!ie;sz=728x90;tile=1;ord=' + ord + '" target="_top"><IMG SRC="http://ad.doubleclick.net/ad/co.terra.enter/home728;ga=serv_co;niv=0;abr=!ie;sz=728x90;tile=1;ord=' + ord + '" width="728" height="90" border="0"></A>');

Necesito buscar en esta línea donde esta la palabra "target", pero que sole me guarde la siguiente parte, que es donde encontro la palabra "target"

<A HREF="http://ad.doubleclick.net/jump/co.terra.enter/home728;ga=serv_co;niv=0;abr=!ie;sz=728x90;tile=1;ord=' + ord + '" target="_top">

Como lo puedo hacer?

Gracias... y espero de su colaboración...
Mensaje Jue Nov 17, 2005 7:19 pm
AkonD
Perlero Nuevo
Perlero Nuevo
Registrado: 06 Oct 2005
Mensajes: 50
Ubicación: España
Responder citando

Puedes hacerlo asi

my ($resto, $siguiente_de_target) = split("target=", $cadena);
Mensaje Sab Nov 19, 2005 5:09 am
explorer39
Perlero Frecuente
Perlero Frecuente
Registrado: 23 Ago 2005
Mensajes: 126
Ubicación: Valladolid, España
Responder citando

Código:
#!/usr/bin/perl
$x = q(document.write('<A HREF="http://ad.doubleclick.net/jump/co.terra.enter/home728;ga=serv_co;niv=0;abr=!ie;sz=728x90;tile=1;ord=' + ord + '" target="_top"><IMG SRC="http://ad.doubleclick.net/ad/co.terra.enter/home728;ga=serv_co;niv=0;abr=!ie;sz=728x90;tile=1;ord=' + ord + '" width="728" height="90" border="0"></A>\'););

# Buscar en $x la primera marca html (<...>) que contiene un 'target'
($y) = $x =~ m/(<.+?target.+?>)/;

print $y;
Mensaje Sab Nov 19, 2005 8:11 am
kidd
Creador de Perl en Español
Creador de Perl en Español
Registrado: 15 Oct 2003
Mensajes: 1389
Ubicación: México
Responder citando

explorer39 escribió:
Código:
#!/usr/bin/perl
$x = q(document.write('<A HREF="http://ad.doubleclick.net/jump/co.terra.enter/home728;ga=serv_co;niv=0;abr=!ie;sz=728x90;tile=1;ord=' + ord + '" target="_top"><IMG SRC="http://ad.doubleclick.net/ad/co.terra.enter/home728;ga=serv_co;niv=0;abr=!ie;sz=728x90;tile=1;ord=' + ord + '" width="728" height="90" border="0"></A>\'););

# Buscar en $x la primera marca html (<...>) que contiene un 'target'
($y) = $x =~ m/(<.+?target.+?>)/;

print $y;



Cambiando tu ejemplo para que se vea un poco más limpio, podría ser:

Código:

  if($x =~ m/(<.+?target.+?>)/){
       $y = $1;
  }



SALUDOS
Mensaje Sab Nov 19, 2005 2:10 pm
Perl user
Maestro Honorario
Maestro Honorario
Registrado: 03 Nov 2004
Mensajes: 385
Responder citando

Aunque ambos comentarios son acertados, hay un problema con las recomendaciones...

Parsear HTML así directamente es tan malo como jugar con fuego... a menos que estés 100% seguro que la manera en la que te presentan el texto es SIEMPRE la misma, entonces parsearlo así es satisfactorio, sin embargo, como se sabe HTML tiene diferentes versiones, muchos cambios y también está XHTML; las construcciones pueden cambiar ( incluyendo mayúsculas y mezclas entre ambos ).

Lo recomendado es utilizar algún módulo existente que haga todas y cada una de esas validaciones para evitar tener dolores de cabeza en la depuración ante un fallo.

Saludos,
Mensaje Dom Nov 20, 2005 12:16 pm
explorer39
Perlero Frecuente
Perlero Frecuente
Registrado: 23 Ago 2005
Mensajes: 126
Ubicación: Valladolid, España
Responder citando

Cierto, y, además, darse cuenta de que estamos hablando de sacar una marca HTML que está dentro de un trozo de código en JavaScript...
Publicar nuevo tema   Responder al tema    Foros de discusión -> Intermedio Todas las horas son GMT - 6 Horas
Página 1 de 1



Powered by phpBB © 2001, 2005 phpBB Group