» » Función PHP para quitar las tildes de una cadena

Función PHP para quitar las tildes de una cadena

Publicado en: Tecnología | 20

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.

20 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

Deja un comentario

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.