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.

Deja una respuesta

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