Foros del Web » Programando para Internet » PHP »

expresion regular para validar nombres de archivos

Estas en el tema de expresion regular para validar nombres de archivos en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 02/05/2013, 10:10
 
Fecha de Ingreso: agosto-2012
Ubicación: Guanajuato
Mensajes: 12
Antigüedad: 12 años, 3 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.
  #2 (permalink)  
Antiguo 03/05/2013, 14:16
 
Fecha de Ingreso: agosto-2012
Ubicación: Guanajuato
Mensajes: 12
Antigüedad: 12 años, 3 meses
Puntos: 2
Información Respuesta: expresion regular para validar nombres de archivos

Chavos, hubo avances desde ayer, ja.

con esto:

echo $nom_archivo = "☻¿(t0ma] ’tu c´añ@ d3 pèZ/c\]äR&![>' ¡";

$nom_archivo = utf8_decode($nom_archivo);
$nom_archivo = preg_replace(
utf8_decode("%[^\wáéíóúÁÉÍÓÚ´ñÑ_\-\s+\(\)\[\].,°!'&=]%"),
"*",$nom_archivo);
echo "<br>".utf8_encode($nom_archivo);


obtengo esto:

☻¿(t0ma] ’tu c´añ@ d3 pèZ/c\]äR&![>' ¡
**(t0ma] *tu c´añ* d3 pèZ*c*]äR&![*' *


Como ven, los caracteres que no necesito son reemplazados por asteriscos, pero al final los borraré con "". Y pues lo considero aceptable aún a pesar de que no hubo coincidencia con la "ä". ¿Será problema de codificación?

gracias por sus respuestas.

Etiquetas: expresion, preg_replace, regular
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 04:21.