Eliminar caracteres raros de una cadena con PHP

Esta función es casi elemental cuando se trabaja con formularios en PHP, si no elemental, es importante conocerla.

Bueno esta función mismamente no, por que es una que me he hecho yo mismo pero supongo que habrán cientos similares… en cualquier caso, aquí pongo la mía, para guardarla en algún sitio y poder reutilizarla cuando la necesite, y ya de paso quizá ayudar a alguien.

Función para eliminar caracteres raros (como acentos y simbolos) de una cadena:

function quitar_caracteres_raros($cadena){
   $caracteres = 'À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö Ø Ù Ú Û Ü Ý Þ ß à á â ã ä å æ ç è é ê ë ì í î ï ð ñ ò ó ô õ ö ø ù ú û ü ý þ ÿ ¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬  ® ¯ ° ± ² ³´ µ ¶ · ¸ ¹ º » ¼ ½ ¾ ¿ × ÷ " \' & < >';
   $caracteres = explode(' ',$caracteres);
   $nchar      = count($caracteres);
   $base       = 0;
   while($base<$nchar){
      $cadena = str_replace($caracteres[$base],'_',$cadena);
      $base++;
   }
   return $cadena;
}

Así, si tenemos una variable con una cadena como por ejemplo:

$titulo = 'Bitácora Josep Viciana';

Y le aplicamos la función:

$titulo = quitar_caracteres_raros($titulo);

Ahora al mostrar el valor de la variable mostraría “Bit_cora Josep Viciana”, compatible con nombres de carpetas, URL, bases de datos… etc.

Los caracteres que se eliminan son los que están en la variable $caracteres, que son estos.

EDIT:
Si lo que se quiere es sólo quitar acentos pero dejar las letras, se puede utilizar esto:

$cadena = strtr($cadena, "áäàéëèíïìóöòúüùñ", "aaaeeeiiiooouuun");



Josep Viciana

Programador de 27 años con una década de experiencia como programador. interesado en el diseño, ilustración y nuevas tecnologías. Dedicado desde siempre a la programación Web y desde hace algunos años también a la móvil.

1 comentario

con esto es suficiente
function quitar_caracteres_raros($cadena){
$caracteres = ‘À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï Ð Ñ Ò Ó Ô Õ Ö Ø Ù Ú Û Ü Ý Þ ß à á â ã ä å æ ç è é ê ë ì í î ï ð ñ ò ó ô õ ö ø ù ú û ü ý þ ÿ ¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ ® ¯ ° ± ² ³´ µ ¶ · ¸ ¹ º » ¼ ½ ¾ ¿ × ÷ ” \’ & ‘;
$caracteres = explode(‘ ‘,$caracteres);
$cadena = str_replace($caracteres,’_’,$cadena);
return $cadena;
}

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *