Foros del Web » Programando para Internet » PHP »

Ayuda con Regular Expression

Estas en el tema de Ayuda con Regular Expression en el foro de PHP en Foros del Web. Hola tengo esa función : Código PHP: function  clean ( $str ){     return    preg_replace ( '/[^a-zA-Z0-9\-ïáíóúé]/' ,  ' ' ,  $str );          }  La llamo ...
  #1 (permalink)  
Antiguo 20/12/2009, 16:48
Avatar de jartaud  
Fecha de Ingreso: octubre-2009
Ubicación: Canal de Panamá
Mensajes: 96
Antigüedad: 14 años, 6 meses
Puntos: 2
Ayuda con Regular Expression

Hola tengo esa función :
Código PHP:
function clean($str){
    return   
preg_replace('/[^a-zA-Z0-9\-ïáíóúé]/'' '$str);
    
    } 
La llamo así: echo clean($_POST['d']);
Si $_POST['d'] = "@ ï Panamá Pedí Olvidó último Volveré @ - % #$#89/¨*]{}+´´´[";

Imprima: Panam Ped Olvid ltimo Volver - 89 (sin los acentos)

Cuando uso directamente la REGEX:
$tes = "@ ï Panamá Pedí Olvidó último Volveré @ - % #$#89/¨*]{}+´´´[";
echo preg_replace("/[^a-zA-Z0-9\-ïáíóúé]/", " ", $tes);

Imprima : ï Panamá Pedí Olvidó último Volveré - 89 (OK).

Alguien puede ver porque la función falla?
  #2 (permalink)  
Antiguo 20/12/2009, 17:08
serser
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Ayuda con Regular Expression

Puede que sea problema de la codificación de caracteres. Pruebas con utf8_encode:

Código PHP:
Ver original
  1. return utf8_encode(preg_replace('/[^a-zA-Z0-9\-ïáíóúé]/', ' ', $str));

  #3 (permalink)  
Antiguo 20/12/2009, 17:35
Avatar de jartaud  
Fecha de Ingreso: octubre-2009
Ubicación: Canal de Panamá
Mensajes: 96
Antigüedad: 14 años, 6 meses
Puntos: 2
Respuesta: Ayuda con Regular Expression

Cita:
Iniciado por serser Ver Mensaje
Puede que sea problema de la codificación de caracteres. Pruebas con utf8_encode:

Código PHP:
Ver original
  1. return utf8_encode(preg_replace('/[^a-zA-Z0-9\-ïáíóúé]/', ' ', $str));

Aun sin éxito.
Probé con poner la u después del delimitador final me manda warning
Warning: preg_replace() [function.preg-replace]: Compilation failed: invalid UTF-8 string at offset 14 in..

Código PHP:
return   utf8_encode(preg_replace('/[^a-zA-Z0-9\-ïáíóúé]/u'' '$str)); 
  #4 (permalink)  
Antiguo 20/12/2009, 18:38
serser
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Ayuda con Regular Expression

Si la cadena es enviada a través de POST, puede que llegue alterada antes de llamar a la función. Prueba con un echo $str; antes de retornar la cadena modificada por preg_replace, a ver que sale.
  #5 (permalink)  
Antiguo 20/12/2009, 19:05
Avatar de jartaud  
Fecha de Ingreso: octubre-2009
Ubicación: Canal de Panamá
Mensajes: 96
Antigüedad: 14 años, 6 meses
Puntos: 2
Respuesta: Ayuda con Regular Expression

Cita:
Iniciado por serser Ver Mensaje
Si la cadena es enviada a través de POST, puede que llegue alterada antes de llamar a la función. Prueba con un echo $str; antes de retornar la cadena modificada por preg_replace, a ver que sale.

echo: \"@ ï \"Panamá Pedí Olvidó último Volveré @ - % #$#89/¨*]{}+´´´[

Bien raro que esto esta pasando (PHP 5.3.0)
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:23.