Jue Nov 17, 2005 4:00 pm
|
 |
julruiz
Perlero Nuevo

|
Registrado: 11 Sep 2005
Mensajes: 18
|
|
| Busqueda en una cadena |
|
|
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... |
|
|
|
Jue Nov 17, 2005 7:19 pm
|
 |
AkonD
Perlero Nuevo

|
Registrado: 06 Oct 2005
Mensajes: 50
Ubicación: España
|
|
|
|
|
Puedes hacerlo asi
my ($resto, $siguiente_de_target) = split("target=", $cadena); |
|
Sab Nov 19, 2005 5:09 am
|
 |
explorer39
Perlero Frecuente

|
Registrado: 23 Ago 2005
Mensajes: 126
Ubicación: Valladolid, España
|
|
|
|
|
| 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; |
|
|

Sab Nov 19, 2005 8:11 am
|
 |
kidd
Creador de Perl en Español

|
Registrado: 15 Oct 2003
Mensajes: 1389
Ubicación: México
|
|
|
|
|
| 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 |
|

Sab Nov 19, 2005 2:10 pm
|
 |
Perl user
Maestro Honorario

|
Registrado: 03 Nov 2004
Mensajes: 385
|
|
|
|
|
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, |
|
Dom Nov 20, 2005 12:16 pm
|
 |
explorer39
Perlero Frecuente

|
Registrado: 23 Ago 2005
Mensajes: 126
Ubicación: Valladolid, España
|
|
|
|
|
| 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... |
|
Powered by phpBB © 2001, 2005 phpBB Group
|