Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/05/2013, 10:10
mr_mojo_risin
 
Fecha de Ingreso: agosto-2012
Ubicación: Guanajuato
Mensajes: 12
Antigüedad: 11 años, 8 meses
Puntos: 2
Exclamación expresion regular para validar nombres de archivos

Señores, pueden echarme una mano con esto?

Haciendo uso de la funcion preg_replace(), intento eliminar caracteres que no serían válidos para un nombre de archivo de windows, y otros más que considero irrelevantes, pero se me complica armar el patrón.

Los caracteres permitidos deberian ser:

a-zA-Z0-9áéíóúÁÉÍÓÚàèìòùÀÈÌÒÙ´`ñÑ_ -+()[].,°!'&=

Usando header('Content-Type: text/html; charset=UTF-8') ...

Con esto:

echo $nom_archivo = "¿(toma] ’tu cañ@ d3 peZ/cÄr!";
$nom_archivo = utf8_decode($nom_archivo);
$nom_archivo = preg_replace(
"%[^\wáéíóúÁÉÍÓÚàèìòùÀÈÌÒÙ´`ñÑ_ -+()[].,°!'&=]%",
"*",$nom_archivo);
echo "<br>".utf8_encode($nom_archivo);

Obtengo esto:

¿(toma] ’tu cañ@ d3 peZ/cÄr!
¿(toma] ?tu cañ@ d3 peZ/cÄr!



y con esto:

echo $nom_archivo = "¿(toma] ’tu cañ@ d3 peZ/cÄr!";
$nom_archivo = utf8_decode($nom_archivo);
$nom_archivo = preg_replace(
"%[^\w_ -+()[].,°!'&=]%",
"*",$nom_archivo);
echo "<br>".utf8_encode($nom_archivo);

obtengo esto:

¿(toma] ’tu cañ@ d3 peZ/cÄr!
¿(toma] ?tu cañ@ d3 peZ/cÄr!



y luego con esto:

echo $texto = "¡’´á☻éíó; eeÑeñ --- a_s`é+@è z ñ ¡h";
$texto = utf8_decode($texto);
$texto = preg_replace("/[^\w´`.,°!'&=+-_ ]/",
"*",$texto);
echo "<br>".utf8_encode($texto);

obtengo esto:

¡’´á☻éíó; eeÑeñ --- a_s`é+@è z ñ ¡h
*?´á?éíó; eeÑeñ --- a_s`é+@è z ñ *h


que opinan? me pueden ayudar?

Saludos.