Perl en Español

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

Problemas con Regexp de Perl

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Básico
Mensaje Dom Mar 26, 2006 1:11 pm
Iojis
Perlero Nuevo
Perlero Nuevo
Registrado: 26 Mar 2006
Mensajes: 9
Problemas con Regexp de Perl Responder citando

Holas, tengo un problema. Estoy haciendo un sistema de smileys en en foro hecho en PERL y tengo un drama con el codigo de sustitucion. Por ej. quiero hacer que al poner Smile se reemplace por una carita. pero no entiendo bien el tema de poner las \ para q no tome a los : y ) como simbolos de PERL... me entienden?
este es el codigo q tengo:

$body =~ s/#1/[img src="http:\/\/path4x4.com\/bullets\/feliz.gif"]/g;

la parte q esta en negrita es lo q tengo actualmente para q sea reemplazado por la carita. pero quiero q sea Smile como hago?

MIL GRACIAS

iojis
Path4x4.com
Mensaje Dom Mar 26, 2006 2:15 pm
creating021
Vive para Perl en Español
Vive para Perl en Español
Registrado: 23 Feb 2006
Mensajes: 478
Ubicación: Frente al monitor
Responder citando

Podes hacer esto:
$url = "img src="http://path4x4.com/bullets/feliz.gif";
$body =~ s/#1/$url/g;
o como lo tenias pero :
$body =~ s/#1/img src="http:\/\/path4x4.com\/bullets\/feliz.gif"/g;
Mensaje Dom Mar 26, 2006 3:19 pm
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4084
Ubicación: Valladolid, España
Responder citando

Esta es una forma de hacerlo. Consiste en primero meter el smile en una variable escalar que luego utilizaremos para hacer la sustitución. Para evitar que Perl se fije en los caracteres extraños, "escapamos" todo el contenido de la variable redeandola con "\Q" y "\E", cuyo efecto es el de "escapar" los caracteres extraños poniéndoles automáticamente un '\' delante a cada uno de ellos.
Código:
foreach my $smile ( @smiles ) {    # :)

    $carita = $imgcaritas{$smile}; # feliz.gif
    $nuevosmile = "\Q$smile\E";    # \:\)

    # Sustitución de todos(g) los $nuevosmiles en $body por nuestras $caritas
    $body =~ s {$nuevosmile} {[img src="http://path4x4.com/bullets/$carita"]}g;
}

Otra forma es usando la función quotemeta, que... hace lo mismo...
Código:
    $nuevosmile = quotemeta($smile); # \:\)

Más info de \Q\E, al final de la sección Expresiones regulares.
Publicar nuevo tema   Responder al tema    Foros de discusión -> Básico Todas las horas son GMT - 6 Horas
Página 1 de 1



Powered by phpBB © 2001, 2005 phpBB Group