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.
Guillermo
Muchas gracias, me ha servido mucho para quitarme de encima unos detalles con JSONencode, de verdad estoy muy agradecido 🙂
Fran
se agradece!
nico
Gracias a vosotros!
Que lo disfruten 🙂
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;
}
nico
Gracias Oscar Eduardo 🙂
SaludoX
Fernando
Excelente solución, intenté de muchas formas, utf-8 en todas partes ya nada, inclusive el htmlentites()
nico
Gracias a ti Fernando.
Lluís
Me has ahorrado mucho trabajo.
Muchas gracias por el código.
nico
Genial Lluís
Un placer 🙂
Manuel
Esto es genial, lo malo es que no se donde meter esto 🙁
nico
Hola Manuel. Es una función PHP.
Debes incluirla en una llamada a la función.
Jojooa
Excelente! me re sirvio en mi codigo!
saludos!!
SuperChinazoPoderoso
$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
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.
Roberto Sajché
Muchas pero Muchas gracias… Es un gran Aporte… Me fue de mucha utilidad…
nico
Un placer Roberto.
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.
nico
Gracias Jairo, lo probaré.
Un saludo.
Luis
¡¡excelente aporte!! ya estaba enloqueciendo… justo a tiempo, jeje
David Nicolás
Muchas gracias Luis, un placer.
Alejandro
Gracias Amigo! Fue muy útil.
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;
}
David Nicolás
Gracias FADY, gran aporte para todos.
Rodolfo Gallegos
Muy bueno. Grcias
David Nicolás
Muchas gracias a ti por dejarme un mensaje. Salud
JonasNook
Excelente aporte me sirvió bastante.
David Nicolás
Gracias JonasNook. Me alegro que te haya servido… 11 años después! Igual sigue el gran handicap de los lenguajes.