Home » Tecnología » Función PHP para quitar las tildes de una cadena

Función PHP para quitar las tildes de una cadena

Publicado en: Tecnología 27

Se puede usar esta función de forma que le pases una cadena de texto, con tildes de todas las clases, y que cada coincidencia la cambie por el caracter sin tilde o signo de puntuación.

function quitar_tildes($cadena) {
$no_permitidas= array ("á","é","í","ó","ú","Á","É","Í","Ó","Ú","ñ","À","Ã","Ì","Ò","Ù","Ù","à","è","ì","ò","ù","ç","Ç","â","ê","î","ô","û","Â","Ê","ÃŽ","Ô","Û","ü","ö","Ö","ï","ä","«","Ò","Ï","Ä","Ë");
$permitidas= array ("a","e","i","o","u","A","E","I","O","U","n","N","A","E","I","O","U","a","e","i","o","u","c","C","a","e","i","o","u","A","E","I","O","U","u","o","O","i","a","e","U","I","A","E");
$texto = str_replace($no_permitidas, $permitidas ,$cadena);
return $texto;
}

Y funciona de maravilla.

27 Comentarios

  1. Guillermo
    | Responder

    Muchas gracias, me ha servido mucho para quitarme de encima unos detalles con JSONencode, de verdad estoy muy agradecido 🙂

  2. Fran
    | Responder

    se agradece!

  3. nico
    | Responder

    Gracias a vosotros!
    Que lo disfruten 🙂

  4. Oscar Eduardo Delgado Maya
    | Responder

    un pequeño detalle es recomendable primero pasar la función utf8_decode
    function quitar_tildes($cadena) {
    $cade = utf8_decode($cadena);
    $no_permitidas= array («á»,»é»,»í»,»ó»,»ú»,»Á»,»É»,»Í»,»Ó»,»Ú»,»ñ»,»À»,»Ã»,»Ì»,»Ò»,»Ù»,»Ã™»,»Ã «,»Ã¨»,»Ã¬»,»Ã²»,»Ã¹»,»ç»,»Ç»,»Ã¢»,»ê»,»Ã®»,»Ã´»,»Ã»»,»Ã‚»,»ÃŠ»,»ÃŽ»,»Ã”»,»Ã›»,»ü»,»Ã¶»,»Ã–»,»Ã¯»,»Ã¤»,»«»,»Ò»,»Ã»,»Ã„»,»Ã‹»,»Ñ»,»à»,»è»,»ì»,»ò»,»ù»);
    $permitidas= array («a»,»e»,»i»,»o»,»u»,»A»,»E»,»I»,»O»,»U»,»n»,»N»,»A»,»E»,»I»,»O»,»U»,»a»,»e»,»i»,»o»,»u»,»c»,»C»,»a»,»e»,»i»,»o»,»u»,»A»,»E»,»I»,»O»,»U»,»u»,»o»,»O»,»i»,»a»,»e»,»U»,»I»,»A»,»E»,»N»,»a»,»e»,»i»,»o»,»u»);
    $texto = str_replace($no_permitidas, $permitidas ,$cade);
    return $texto;
    }

  5. nico
    | Responder

    Gracias Oscar Eduardo 🙂

    SaludoX

  6. Fernando
    | Responder

    Excelente solución, intenté de muchas formas, utf-8 en todas partes ya nada, inclusive el htmlentites()

  7. Lluís
    | Responder

    Me has ahorrado mucho trabajo.
    Muchas gracias por el código.

  8. nico
    | Responder

    Genial Lluís
    Un placer 🙂

  9. Manuel
    | Responder

    Esto es genial, lo malo es que no se donde meter esto 🙁

    • nico
      | Responder

      Hola Manuel. Es una función PHP.
      Debes incluirla en una llamada a la función.

  10. Jojooa
    | Responder

    Excelente! me re sirvio en mi codigo!
    saludos!!

  11. SuperChinazoPoderoso
    | Responder

    $larCharsNoAble = array(«¡»,»¢»,»£»,»¤»,»¥»,»§»,»¨»,»©»
    ,»ª»,»«»,»¬»,»®»,»¯»,»°»,»±»,»´»,»µ»,»¶»,»·»,»¸»
    ,»º»,»»»,»¿»,»À»,»Á»,»Â»,»Ã»,»Ä»,»Å»,»Æ»,»Ç»,»È»,»É»
    ,»Ê»,»Ë»,»Ì»,»Í»,»Î»,»Ï»,»Ñ»,»Ò»,»Ó»,»Ô»,»Õ»,»Ö»,»Ø»
    ,»Ù»,»Ú»,»Û»,»Ü»,»ß»,»à»,»á»,»â»,»ã»,»ä»,»å»,»æ»,»ç»
    ,»è»,»é»,»ê»,»ë»,»ì»,»í»,»î»,»ï»,»ñ»,»ò»,»ó»,»ô»,»õ»
    ,»ö»,»÷»,»ø»,»ù»,»ú»,»û»,»ü»,»ÿ»,»—»,'»‘, «/»);

    $larCharsAble = array(«\u00a1″,»\u00a2″,»\u00a3″,»\u00a4″
    ,»\u00a5″,»\u00a7″,»\u00a8″,»\u00a9″,»\u00aa»,»\u00ab»
    ,»\u00ac»,»\u00ae»,»\u00af»,»\u00b0″,»\u00b1″,»\u00b4″
    ,»\u00b5″,»\u00b6″,»\u00b7″,»\u00b8″,»\u00ba»,»\u00bb»
    ,»\u00bf»,»\u00c0″,»\u00c1″,»\u00c2″,»\u00c3″,»\u00c4″
    ,»\u00c5″,»\u00c6″,»\u00c7″,»\u00c8″,»\u00c9″,»\u00ca»
    ,»\u00cb»,»\u00cc»,»\u00cd»,»\u00ce»,»\u00cf»,»\u00d1″
    ,»\u00d2″,»\u00d3″,»\u00d4″,»\u00d5″,»\u00d6″,»\u00d8″
    ,»\u00d9″,»\u00da»,»\u00db»,»\u00dc»,»\u00df»,»\u00e0″
    ,»\u00e1″,»\u00e2″,»\u00e3″,»\u00e4″,»\u00e5″,»\u00e6″
    ,»\u00e7″,»\u00e8″,»\u00e9″,»\u00ea»,»\u00eb»,»\u00ec»
    ,»\u00ed»,»\u00ee»,»\u00ef»,»\u00f1″,»\u00f2″,»\u00f3″
    ,»\u00f4″,»\u00f5″,»\u00f6″,»\u00f7″,»\u00f8″,»\u00f9″
    ,»\u00fa»,»\u00fb»,»\u00fc»,»\u00ff»,»\u2014″,’\»‘, «\/»);

    $larCharsOriginal = ‘Varios caracteres 24/05/2015 que no forman parte «del repertorio ASCII» estándar resultan útiles —incluso necesarios— para las páginas Wiki, especialmente las páginas internacionales. En principio, si se usa la moderna codificación UTF-8 no debería dar problemas, incluso permite en páginas escritas en varios idiomas simultáneos poder leerse sin problemas. No importa si tienen caracteres árabes o chinos, todos están incluidos. Si tienes tu sistema operativo actualizado para usar el UTF-8 podrás escribir sin problemas y podrás leer igualmente sin problemas. Si ves que queda alguna página antigua con cuadraditos en vez de letras acentuadas, ayúdanos a corregirlos.’;

    $texto = str_replace($larCharsNoAble, $larCharsAble, $larCharsOriginal);

    • SuperChinazoPoderoso
      | Responder

      The Result was:

      Varios caracteres 24\/05\/2015 que no forman parte \»del repertorio ASCII\» est\u00e1ndar resultan \u00fatiles \u2014incluso necesarios\u2014 para las p\u00e1ginas Wiki, especialmente las p\u00e1ginas internacionales. En principio, si se usa la moderna codificaci\u00f3n UTF-8 no deber\u00eda dar problemas, incluso permite en p\u00e1ginas escritas en varios idiomas simult\u00e1neos poder leerse sin problemas. No importa si tienen caracteres \u00e1rabes o chinos, todos est\u00e1n incluidos. Si tienes tu sistema operativo actualizado para usar el UTF-8 podr\u00e1s escribir sin problemas y podr\u00e1s leer igualmente sin problemas. Si ves que queda alguna p\u00e1gina antigua con cuadraditos en vez de letras acentuadas, ay\u00fadanos a corregirlos.

  12. Roberto Sajché
    | Responder

    Muchas pero Muchas gracias… Es un gran Aporte… Me fue de mucha utilidad…

  13. Jairo Gelbes
    | Responder

    Para eso me parece que es mejor iconv(‘UTF-8’, ‘ASCII//TRANSLIT’, $cadena); quizás no sin antes definir setlocale(LC_ALL, ‘lo_que_corresponda’); correctamente. Un saludo.

    • nico
      | Responder

      Gracias Jairo, lo probaré.
      Un saludo.

  14. Luis
    | Responder

    ¡¡excelente aporte!! ya estaba enloqueciendo… justo a tiempo, jeje

  15. Alejandro
    | Responder

    Gracias Amigo! Fue muy útil.

  16. FADY
    | Responder

    $cadena= eliminar_acentos($cadena);

    function eliminar_acentos($cadena){
    $especial = utf8_decode(«ÁÀÂÄáàäâªÉÈÊËéèëêÍÌÏÎíìïîÓÒÖÔóòöôÚÙÛÜúùüûÑñÇç»);
    $reemplazar = utf8_decode(«AAAAaaaaaEEEEeeeeIIIIiiiiOOOOooooUUUUuuuuNnCc»);
    for($i=0; $i<=strlen($cadena); $i++)
    {
    for($f=0; $f<strlen($especial); $f++)
    {
    $caracteri= substr($cadena,$i,1);
    $caracterf= substr($especial,$f,1);
    if($caracteri===$caracterf)
    {
    $cadena = substr($cadena,0,$i).substr($reemplazar,$f,1).substr($cadena,$i+1);
    }
    }
    }
    return $cadena;
    }

  17. Rodolfo Gallegos
    | Responder

    Muy bueno. Grcias

  18. JonasNook
    | Responder

    Excelente aporte me sirvió bastante.

    • David Nicolás
      | Responder

      Gracias JonasNook. Me alegro que te haya servido… 11 años después! Igual sigue el gran handicap de los lenguajes.

Responder a SuperChinazoPoderoso Cancelar la respuesta

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