Dom Mar 26, 2006 1:11 pm
|
 |
Iojis
Perlero Nuevo

|
Registrado: 26 Mar 2006
Mensajes: 9
|
|
| Problemas con Regexp de Perl |
|
|
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 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 como hago?
MIL GRACIAS
iojis
Path4x4.com |
|
|
|
Dom Mar 26, 2006 2:15 pm
|
 |
creating021
Vive para Perl en Español

|
Registrado: 23 Feb 2006
Mensajes: 478
Ubicación: Frente al monitor
|
|
|
|
|
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; |
|

Dom Mar 26, 2006 3:19 pm
|
 |
explorer
Moderador

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