Foros del Web » Programando para Internet » PHP »

Filtro de expresiones regulares

Estas en el tema de Filtro de expresiones regulares en el foro de PHP en Foros del Web. Hola foreros, Estoy intentando filtrar una cadena para que desaparezcan los caracteres que no coincidan con un patrón, que es este: Código PHP: function  limpiaCadena ...
  #1 (permalink)  
Antiguo 15/07/2011, 17:14
Avatar de damargon  
Fecha de Ingreso: junio-2003
Ubicación: Madrid
Mensajes: 386
Antigüedad: 20 años, 10 meses
Puntos: 3
Filtro de expresiones regulares

Hola foreros,

Estoy intentando filtrar una cadena para que desaparezcan los caracteres que no coincidan con un patrón, que es este:

Código PHP:
function limpiaCadena($cadena) {
             return (
ereg_replace('[^ A-Za-z0-9_-]'''$cadena));
        } 
Pero el asunto es que yo quiero que no filtre también otros caracteres, los más típicos que se usan en texto, por ejemplo: el * y la ?

He probado con esto:

Código PHP:
function limpiaCadena($cadena) {
             return (
ereg_replace('[^ A-Za-z0-9_-*?]'''$cadena));
        } 
Y lo que hace es limpiarme la cadena entera, no sale nada de nada, he intentado escapar con \ el asterisco para que lo tome como un literal, lo mismo con la interrogación pero tampoco, no consigo nada.

¿Alguna pequeña ayudita?

Muchas gracias de antemano
  #2 (permalink)  
Antiguo 15/07/2011, 17:43
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Filtro de expresiones regulares

ereg* son funciones obsoletas, en su lugar debes usar preg* y, para aprender un poco sobre las expresiones regulares, te recomiendo: http://www.forosdelweb.com/f18/aport...s-pcre-646110/
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 15/07/2011, 17:49
Avatar de damargon  
Fecha de Ingreso: junio-2003
Ubicación: Madrid
Mensajes: 386
Antigüedad: 20 años, 10 meses
Puntos: 3
Respuesta: Filtro de expresiones regulares

Muchas gracias Triby por el enlace pero ya me he leido varios tutoriales de expresiones regulares y no he encontrado la forma de hacer lo que quiero.

¿Alguien me puede echar una mano?

Gracias.
  #4 (permalink)  
Antiguo 15/07/2011, 22:26
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 10 meses
Puntos: 1567
Respuesta: Filtro de expresiones regulares

damargon
Código PHP:
Ver original
  1. <?php
  2. $cadena = "AbcD % #F*Gh-9_0P               555*YTT?8@33";
  3. $patron="/[^(a-zA-Z0-9_\-\*)]/";
  4. echo preg_replace($patron, '', $cadena);  
  5.  
  6. #### devuelve AbcDF*Gh-9_0P555*YTT833
  7.  
  8. echo "<hr>";
  9.  
  10. $patron="/[(a-zA-Z0-9_\-\*)]/";
  11. echo preg_replace($patron, '', $cadena);  
  12.  
  13. #### devuelve % # ?@
  14.  
  15. #### El signo ^ dentro de la clase y antes del conjunto de caracteres niega la condicion
  16. #### para no hacer el reemplazo sobre los mismos, y a la inversa si no se lo usa
  17. ?>


Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.

Etiquetas: expresiones, regulares, filtros
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:10.