Función PHP para quitar las tildes de una cadena

Publicado en: Tecnología

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
    |

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

  2. Fran
    |

    se agradece!

  3. nico
    |

    Gracias a vosotros!
    Que lo disfruten 🙂

  4. Oscar Eduardo Delgado Maya
    |

    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
    |

    Gracias Oscar Eduardo 🙂

    SaludoX

  6. Fernando
    |

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

  7. nico
    |

    Gracias a ti Fernando.

  8. Lluís
    |

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

  9. nico
    |

    Genial Lluís
    Un placer 🙂

  10. Manuel
    |

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

  11. nico
    |

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

  12. Jojooa
    |

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

  13. SuperChinazoPoderoso
    |

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

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

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

  14. SuperChinazoPoderoso
    |

    The Result was:

    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.

  15. Roberto Sajché
    |

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

  16. nico
    |

    Un placer Roberto.

  17. Jairo Gelbes
    |

    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.

  18. nico
    |

    Gracias Jairo, lo probaré.
    Un saludo.

  19. Luis
    |

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

  20. David Nicolás
    |

    Muchas gracias Luis, un placer.

  21. Alejandro
    |

    Gracias Amigo! Fue muy útil.

  22. FADY
    |

    $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;
    }

  23. David Nicolás
    |

    Gracias FADY, gran aporte para todos.

  24. Rodolfo Gallegos
    |

    Muy bueno. Grcias

  25. JonasNook
    |

    Excelente aporte me sirvió bastante.

  26. David Nicolás
    |

    Muchas gracias a ti por dejarme un mensaje. Salud

  27. David Nicolás
    |

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