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áéíóúÁÉÍÓÚàèìòùÀÈÌÒÙ´`ñÑ_ -+()[].,°!'&=]%",echo "<br>".utf8_encode($nom_archivo);
"*",$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_ -+()[].,°!'&=]%",echo "<br>".utf8_encode($nom_archivo);
"*",$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.