Página 1 de 1

Filtrado de caracteres no alfanuméricos

NotaPublicado: 2010-02-21 03:45 @198
por konextao
Buenos días foreros.

Soy un meganovato en el tema del Perl pues hace poco que descubrí este lenguaje y me viene de perlas para hacer algún que otro proyecto.

Me gustaría saber cómo puedo filtrar una variable ($texto) para que solo queden en la misma los caracteres alfanuméricos y elimine caracteres extraños,

Por ejemplo, si la variable $texto contiene "0123~+/ABcDef╚~" pues que dicha variable quede en "0123ABcDef".

Un saludo.

Re: Filtrado de caracteres no alfanuméricos

NotaPublicado: 2010-02-21 07:48 @366
por explorer
Bienvenido a los foros de Perl en Español, konextao.

Si quieres quedarte con solo caracteres alfanuméricos, te vale con

$texto =~ s/\W//g;

\W equivale a cualquier carácter no alfanumérico (excluyendo el '_'). Aplicamos la expresión regular (=~) a todo el $texto, sustituyendo (s///) cada carácter encontrado, por nada. Y lo repetimos para todos los demás (/g).

Más información en perldoc perlre (Character Classes and other Special Escapes).

Actualización: no nos has indicado si los caracteres pertenecen a una determinada codificación. Es importante porque no es lo mismo tratar como bytes una cadena de caracteres, que como una secuencia de caracteres.

Re: Filtrado de caracteres no alfanuméricos

NotaPublicado: 2010-02-21 07:53 @370
por konextao
Gracias mil por la respuesta.

Es simplemente que deseaba realizar el filtrado de una cadena de texto introducida a través de un formulario por lo que se trata de una simple cadena de caracteres.
Solo quería saber como eliminar caracteres extraños que a cualquiera le hubiera dado por introducir.

Cuanto más empiezo a conocer Perl más me gusta 8)

¡¡ Saludos !!