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");

Comentarios (1)

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

Deja una respuesta

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

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.