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
JonasNook
Excelente aporte me sirvió bastante.
David Nicolás
Muchas gracias a ti por dejarme un mensaje. Salud
David Nicolás
Gracias JonasNook. Me alegro que te haya servido… 11 años después! Igual sigue el gran handicap de los lenguajes.