• Publicidad

Busqueda en una cadena

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

Busqueda en una cadena

Notapor julruiz » 2005-11-17 17:00 @750

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...
julruiz
Perlero nuevo
Perlero nuevo
 
Mensajes: 18
Registrado: 2005-09-11 20:55 @913

Publicidad

Notapor AkonD » 2005-11-17 20:19 @888

Puedes hacerlo asi

my ($resto, $siguiente_de_target) = split("target=", $cadena);
AkonD
Perlero nuevo
Perlero nuevo
 
Mensajes: 50
Registrado: 2005-10-06 06:36 @316
Ubicación: España

Notapor explorer39 » 2005-11-19 06:09 @298

Código: Seleccionar todo
#!/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;
explorer39
 

Notapor kidd » 2005-11-19 09:11 @424

explorer39 escribiste:
Código: Seleccionar todo
#!/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: Seleccionar todo
  if($x =~ m/(<.+?target.+?>)/){
       $y = $1;
  }



SALUDOS
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

Notapor Perl user » 2005-11-19 15:10 @673

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,
Marco A. Manzo
[email protected]
http://www.unixmonkeys.com/amnesiac/
Perl Programming Language
Perl user
Maestro honorario
Maestro honorario
 
Mensajes: 271
Registrado: 2004-11-03 21:11 @924

Notapor explorer39 » 2005-11-20 13:16 @595

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...
explorer39
 


Volver a Intermedio

¿Quién está conectado?

Usuarios navegando por este Foro: Google [Bot] y 0 invitados