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