PHP Función para quitar acentos y caracteres especiales

Muchas veces los caracteres especiales nos dan inconvenientes, en mi caso tengo problemas entre la comunicación de dos sistemas.
Cómo PHP no tiene una función nativa que haga esto hubo que hacerla a mano.
Aclaro que intente con la función strtr pero algunos caracteres no los tenia en cuenta y por eso esta función.

/**
* stripAccents()
* @description Esta función remplaza todos los caracteres especiales de un texto dado por su equivalente
* @author      Esteban Novo
* @link        http://www.notasdelprogramador.com/2011/01/13/php-funcion-para-quitar-acentos-y-caracteres-especiales/
* @access      public
* @copyright   Todos los Derechos Reservados
* @param       string $String
* @return      Retorna el nuevo String sin caracteres especiales
*/
Function stripAccents($String)
{
    $String = ereg_replace("[äáàâãª]","a",$String);
    $String = ereg_replace("[ÁÀÂÃÄ]","A",$String);
    $String = ereg_replace("[ÍÌÎÏ]","I",$String);
    $String = ereg_replace("[íìîï]","i",$String);
    $String = ereg_replace("[éèêë]","e",$String);
    $String = ereg_replace("[ÉÈÊË]","E",$String);
    $String = ereg_replace("[óòôõöº]","o",$String);
    $String = ereg_replace("[ÓÒÔÕÖ]","O",$String);
    $String = ereg_replace("[úùûü]","u",$String);
    $String = ereg_replace("[ÚÙÛÜ]","U",$String);
    $String = ereg_replace("[^´`¨~]","",$String);
    $String = str_replace("ç","c",$String);
    $String = str_replace("Ç","C",$String);
    $String = str_replace("ñ","n",$String);
    $String = str_replace("Ñ","N",$String);
    $String = str_replace("Ý","Y",$String);
    $String = str_replace("ý","y",$String);
    return $String;
}

Y la invocamos de esta forma:

echo stripAccents("àáâãäçèéêëìíîïñòóôõöùúûüýÿÀÁÂÃÄÇÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝ`^´");
// Resultado
// aaaaaceeeeiiiinooooouuuuyAAAAACEEEEIIIINOOOOOUUUUY

13 thoughts on “PHP Función para quitar acentos y caracteres especiales

  1. function borrar_accentos($str)
    {
    $a = array(‘À’, ‘Á’, ‘Â’, ‘Ã’, ‘Ä’, ‘Å’, ‘Æ’, ‘Ç’, ‘È’, ‘É’, ‘Ê’, ‘Ë’, ‘Ì’, ‘Í’, ‘Î’, ‘Ï’, ‘Ð’, ‘Ñ’, ‘Ò’, ‘Ó’, ‘Ô’, ‘Õ’, ‘Ö’, ‘Ø’, ‘Ù’, ‘Ú’, ‘Û’, ‘Ü’, ‘Ý’, ‘ß’, ‘à’, ‘á’, ‘â’, ‘ã’, ‘ä’, ‘å’, ‘æ’, ‘ç’, ‘è’, ‘é’, ‘ê’, ‘ë’, ‘ì’, ‘í’, ‘î’, ‘ï’, ‘ñ’, ‘ò’, ‘ó’, ‘ô’, ‘õ’, ‘ö’, ‘ø’, ‘ù’, ‘ú’, ‘û’, ‘ü’, ‘ý’, ‘ÿ’, ‘Ā’, ‘ā’, ‘Ă’, ‘ă’, ‘Ą’, ‘ą’, ‘Ć’, ‘ć’, ‘Ĉ’, ‘ĉ’, ‘Ċ’, ‘ċ’, ‘Č’, ‘č’, ‘Ď’, ‘ď’, ‘Đ’, ‘đ’, ‘Ē’, ‘ē’, ‘Ĕ’, ‘ĕ’, ‘Ė’, ‘ė’, ‘Ę’, ‘ę’, ‘Ě’, ‘ě’, ‘Ĝ’, ‘ĝ’, ‘Ğ’, ‘ğ’, ‘Ġ’, ‘ġ’, ‘Ģ’, ‘ģ’, ‘Ĥ’, ‘ĥ’, ‘Ħ’, ‘ħ’, ‘Ĩ’, ‘ĩ’, ‘Ī’, ‘ī’, ‘Ĭ’, ‘ĭ’, ‘Į’, ‘į’, ‘İ’, ‘ı’, ‘IJ’, ‘ij’, ‘Ĵ’, ‘ĵ’, ‘Ķ’, ‘ķ’, ‘Ĺ’, ‘ĺ’, ‘Ļ’, ‘ļ’, ‘Ľ’, ‘ľ’, ‘Ŀ’, ‘ŀ’, ‘Ł’, ‘ł’, ‘Ń’, ‘ń’, ‘Ņ’, ‘ņ’, ‘Ň’, ‘ň’, ‘ʼn’, ‘Ō’, ‘ō’, ‘Ŏ’, ‘ŏ’, ‘Ő’, ‘ő’, ‘Œ’, ‘œ’, ‘Ŕ’, ‘ŕ’, ‘Ŗ’, ‘ŗ’, ‘Ř’, ‘ř’, ‘Ś’, ‘ś’, ‘Ŝ’, ‘ŝ’, ‘Ş’, ‘ş’, ‘Š’, ‘š’, ‘Ţ’, ‘ţ’, ‘Ť’, ‘ť’, ‘Ŧ’, ‘ŧ’, ‘Ũ’, ‘ũ’, ‘Ū’, ‘ū’, ‘Ŭ’, ‘ŭ’, ‘Ů’, ‘ů’, ‘Ű’, ‘ű’, ‘Ų’, ‘ų’, ‘Ŵ’, ‘ŵ’, ‘Ŷ’, ‘ŷ’, ‘Ÿ’, ‘Ź’, ‘ź’, ‘Ż’, ‘ż’, ‘Ž’, ‘ž’, ‘ſ’, ‘ƒ’, ‘Ơ’, ‘ơ’, ‘Ư’, ‘ư’, ‘Ǎ’, ‘ǎ’, ‘Ǐ’, ‘ǐ’, ‘Ǒ’, ‘ǒ’, ‘Ǔ’, ‘ǔ’, ‘Ǖ’, ‘ǖ’, ‘Ǘ’, ‘ǘ’, ‘Ǚ’, ‘ǚ’, ‘Ǜ’, ‘ǜ’, ‘Ǻ’, ‘ǻ’, ‘Ǽ’, ‘ǽ’, ‘Ǿ’, ‘ǿ’);
    $b = array(‘A’, ‘A’, ‘A’, ‘A’, ‘A’, ‘A’, ‘AE’, ‘C’, ‘E’, ‘E’, ‘E’, ‘E’, ‘I’, ‘I’, ‘I’, ‘I’, ‘D’, ‘N’, ‘O’, ‘O’, ‘O’, ‘O’, ‘O’, ‘O’, ‘U’, ‘U’, ‘U’, ‘U’, ‘Y’, ‘s’, ‘a’, ‘a’, ‘a’, ‘a’, ‘a’, ‘a’, ‘ae’, ‘c’, ‘e’, ‘e’, ‘e’, ‘e’, ‘i’, ‘i’, ‘i’, ‘i’, ‘n’, ‘o’, ‘o’, ‘o’, ‘o’, ‘o’, ‘o’, ‘u’, ‘u’, ‘u’, ‘u’, ‘y’, ‘y’, ‘A’, ‘a’, ‘A’, ‘a’, ‘A’, ‘a’, ‘C’, ‘c’, ‘C’, ‘c’, ‘C’, ‘c’, ‘C’, ‘c’, ‘D’, ‘d’, ‘D’, ‘d’, ‘E’, ‘e’, ‘E’, ‘e’, ‘E’, ‘e’, ‘E’, ‘e’, ‘E’, ‘e’, ‘G’, ‘g’, ‘G’, ‘g’, ‘G’, ‘g’, ‘G’, ‘g’, ‘H’, ‘h’, ‘H’, ‘h’, ‘I’, ‘i’, ‘I’, ‘i’, ‘I’, ‘i’, ‘I’, ‘i’, ‘I’, ‘i’, ‘IJ’, ‘ij’, ‘J’, ‘j’, ‘K’, ‘k’, ‘L’, ‘l’, ‘L’, ‘l’, ‘L’, ‘l’, ‘L’, ‘l’, ‘l’, ‘l’, ‘N’, ‘n’, ‘N’, ‘n’, ‘N’, ‘n’, ‘n’, ‘O’, ‘o’, ‘O’, ‘o’, ‘O’, ‘o’, ‘OE’, ‘oe’, ‘R’, ‘r’, ‘R’, ‘r’, ‘R’, ‘r’, ‘S’, ‘s’, ‘S’, ‘s’, ‘S’, ‘s’, ‘S’, ‘s’, ‘T’, ‘t’, ‘T’, ‘t’, ‘T’, ‘t’, ‘U’, ‘u’, ‘U’, ‘u’, ‘U’, ‘u’, ‘U’, ‘u’, ‘U’, ‘u’, ‘U’, ‘u’, ‘W’, ‘w’, ‘Y’, ‘y’, ‘Y’, ‘Z’, ‘z’, ‘Z’, ‘z’, ‘Z’, ‘z’, ‘s’, ‘f’, ‘O’, ‘o’, ‘U’, ‘u’, ‘A’, ‘a’, ‘I’, ‘i’, ‘O’, ‘o’, ‘U’, ‘u’, ‘U’, ‘u’, ‘U’, ‘u’, ‘U’, ‘u’, ‘U’, ‘u’, ‘A’, ‘a’, ‘AE’, ‘ae’, ‘O’, ‘o’);
    return str_replace($a, $b, $str);
    }

    function post_url($str)
    {
    return strtolower(preg_replace(array(‘/[^a-zA-Z0-9 -]/’, ‘/[ -]+/’, ‘/^-|-$/’),
    array(”, ‘-‘, ”), borrar_accentos($str)));
    }

  2. Tengo un problemita con las tildes y caracteres especiales cuando muestro de mi base de datos; quiero que me salga con todo tildes pero salen codigos raros…algo asi:

    (KUELAP-CHACHAPOYAS
    Sitio arqueol�gico del Per� construido por la cultura Chachapoyas. Forma parte un conjunto arquitect�nico de piedras de grandes dimenciones, ubicado en lo alto de una monta�a a 3.000 msnm. Se encuentra al margen izquierdo del r�o Utcubanba, en la provincia de Luya.)…

    no me muestran las tildes y otros….
    como puedo hacer.

    • Es un problema de codificación de caracteres, lo mas seguro los datos en tu DB esten en UTF8, proba esto, en el Head de tu página declararla como UTF8, algo así:

      y cuando escribís el resultado capturado desde la base con PHP, usa la función utf8_encode(“aqui tu contenido de la db”) o utf8_decode(“aqui tu contenido de la db”), no me acuerdo cual de ellas.

      Espero te sirva!

  3. Lo de los corchestes no funciona, abría que hacerlo metiendolo dentro de un array. Quedaría así: function limpiar($String){
    $String = str_replace(array(‘á’,’à’,’â’,’ã’,’ª’,’ä’),”a”,$String);
    $String = str_replace(array(‘Á’,’À’,’Â’,’Ã’,’Ä’),”A”,$String);
    $String = str_replace(array(‘Í’,’Ì’,’Î’,’Ï’),”I”,$String);
    $String = str_replace(array(‘í’,’ì’,’î’,’ï’),”i”,$String);
    $String = str_replace(array(‘é’,’è’,’ê’,’ë’),”e”,$String);
    $String = str_replace(array(‘É’,’È’,’Ê’,’Ë’),”E”,$String);
    $String = str_replace(array(‘ó’,’ò’,’ô’,’õ’,’ö’,’º’),”o”,$String);
    $String = str_replace(array(‘Ó’,’Ò’,’Ô’,’Õ’,’Ö’),”O”,$String);
    $String = str_replace(array(‘ú’,’ù’,’û’,’ü’),”u”,$String);
    $String = str_replace(array(‘Ú’,’Ù’,’Û’,’Ü’),”U”,$String);
    $String = str_replace(array(‘[','^','´','`','¨','~',']‘),””,$String);
    $String = str_replace(“ç”,”c”,$String);
    $String = str_replace(“Ç”,”C”,$String);
    $String = str_replace(“ñ”,”n”,$String);
    $String = str_replace(“Ñ”,”N”,$String);
    $String = str_replace(“Ý”,”Y”,$String);
    $String = str_replace(“ý”,”y”,$String);
    return $String;
    }

Deja un comentario

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


*

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>