No suelo tener problemas con las tildes y elementos extraños, Alguna vez cuando son entradas a una base de datos. Cuando es así, utilizo htmlentities y sale el código asociado a ese caracter. Pero si queréis de verdad eliminar las tildes, con php se puede realizar una sencillita función que lea la cadena y que sustituya esos elementos extraños por sus más normalitos.
Esta función la he visto en algo que decir:
function limpiar_acentos($s)
{
$s = ereg_replace(”[áàâãª]”,”a”,$s);
$s = ereg_replace(”[ÁÀÂÃ]”,”A”,$s);
$s = ereg_replace(”[ÍÌÎ]”,”I”,$s);
$s = ereg_replace(”[íìî]”,”i”,$s);
$s = ereg_replace(”[éèê]”,”e”,$s);
$s = ereg_replace(”[ÉÈÊ]”,”E”,$s);
$s = ereg_replace(”[óòôõº]”,”o”,$s);
$s = ereg_replace(”[ÓÒÔÕ]”,”O”,$s);
$s = ereg_replace(”[úùû]”,”u”,$s);
$s = ereg_replace(”[ÚÙÛ]”,”U”,$s);
$s = str_replace(”ç”,”c”,$s);
$s = str_replace(”Ç”,”C”,$s);
$s = str_replace(”[ñ]”,”n”,$s);
$s = str_replace(”[Ñ]”,”N”,$s);
return $s;
}
Espero que le sirva a alguien...
Si me sirve Gracias!
ResponderEliminarse debería usar ahora (php5)
ResponderEliminar$vocalti= array ("á","é","í","ó","ú","Á","É","Í","Ó","Ú");
$vocales= array ("a","e","i","o","u","A","E","I","O","U");
str_replace($vocalti, $vocales,$variable);
sí que me ha servido, gracias!
ResponderEliminarA mi tambien me ha servido. Gracias.
ResponderEliminara mi Álava se me transforma en aAlava
ResponderEliminarPues lo he probado en mi servidor y a mi si me funciona. Tiene pinta de que tengas alguna configuración que no sea 'case sensitive' y te lo haga dos veces.
ResponderEliminarGracias! muy util!
ResponderEliminarmuchas gracias loco !
ResponderEliminarA mi no me ha servido niguno de lo dos, queda exactamente igual.
ResponderEliminarwww.leodoncel.com
funcionar funciona..
ResponderEliminarDebes revisar tu implementación y ver que estás utilizando php
Amigos... no me funciona y eso que lo paso por 3 metodos diferentes...
ResponderEliminarpor ej.. tengo..
function quitar_tildes($cadena)
{
$varCaracteres = array ("/á/", "/é/", "/í/", "/ó/", "/ú/", "/ñ/");
$varCaracteresHTML = array ("a", "e", "i", "o", "u", "n");
$cadena = preg_replace($varCaracteres, $varCaracteresHTML, $cadena);
$cadena= strtr($cadena, "àáâãäåèéêëìíîïòóôõöùúûüñ", "aaaaaaeeeeiiiiooooouuuun");
$vocalti= array ("á","é","í","ó","ú","Á","É","Í","Ó","Ú");
$vocales= array ("a","e","i","o","u","A","E","I","O","U");
echo $cadena=str_replace($vocalti, $vocales,$cadena);
return $cadena;
}
y la cadena sigueee igual.. que podria ser ???
Así a primera vista veo que tienes mal la linea donde pones :
ResponderEliminarecho $cadena=str_replace($vocalti, $vocales,$cadena);
deberías quitar el echo
has metido demasiadas cosas ahí, los ejemplos los debes hacer cada uno por su lado.
ResponderEliminarte paso una función simple que se basa en el ejemplo que está publicado en este artículo.
function limpieza($cadena)
{
$vocalti= array ("á","é","í","ó","ú","Á","É","Í","Ó","Ú","ñ","Ñ","À","È","Ì","Ò","Ù","à","è","ì","ò","ù","ç","Ç","â","ê","î","ô","û","Â","Ê","Î","Ô","Û","ü","ö","Ö","ï","ä","ë","Ü","Ï","Ä","Ë");
$vocales= 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");
$cadena=str_replace($vocalti, $vocales,$cadena);
return $string;
}
perdón, al final debe poner return $cadena
ResponderEliminarno return $tring
$nombreImg = basename($_FILES[$fileFieldName]["name"]);
ResponderEliminar$NoAllow = array("á","é","í","ó","ú","ä","ë","ï","ö","ü","à","è","ì","ò","ù","ñ"," ",",",";",":","¡","!","¿","?",'"',"Á","À","É","È","Í","Ì","Ó","Ó","Ú","Ù","ç","Ç","ñ","Ñ","â","ã","ª","Â","Ã","Î","î","ê","ô","õ","º","Ô","Õ","û","Û","`","´","!","¡","?","¿","=",")","(","/","\\","|","&","%","$","·","@","~","€","¬");
$Allow = array("a","e","i","o","u","a","e","i","o","u","a","e","i","o","u","n","_","","","","","","","",'',"A","A","E","E","I","I","O","O","U","U","c","C","n","N","a","a","a","A","A","I","i","e","o","o","o","O","O","u","U","","","","","","","","","","","","","","","S","","a","","E","");
$nombreImg = str_replace($NoAllow,$Allow,$nombreImg);
Muchas Gracias, si me sirve!
ResponderEliminarMe ha servidor mucho tu post, pero he tenido que modificarlo.
ResponderEliminarLos tiempos cambian y este post es del 2006. Ahora la función ereg_replace queda obsoleta desde PHP5 y su uso no se recomienda.
Mi cambio y solución sería la siguiente:
function limpiar_caracteres_especiales($s){
$s = str_replace(array('á','à','â','ã','ª'),"a",$s);
$s = str_replace(array('Á','À','Â','Ã'),"A",$s);
$s = str_replace(array('Í','Ì','Î'),"I",$s);
$s = str_replace(array('í','ì','î'),"i",$s);
$s = str_replace(array('é','è','ê'),"e",$s);
$s = str_replace(array('É','È','Ê'),"E",$s);
$s = str_replace(array('ó','ò','ô','õ','º'),"o",$s);
$s = str_replace(array('Ó','Ò','Ô','Õ'),"O",$s);
$s = str_replace(array('ú','ù','û'),"u",$s);
$s = str_replace(array('Ú','Ù','Û'),"U",$s);
$s = str_replace("ç","c",$s);
$s = str_replace("Ç","C",$s);
$s = str_replace("[ñ]","n",$s);
$s = str_replace("[Ñ]","N",$s);
return $s;
}
Mejor todavía. Primero decodificamos $s a utf-8.
ResponderEliminarfunction limpiar_caracteres_especiales($s){
$s = utf8_decode($s);
$s = str_replace(array('á','à','â','ã','ª'),"a",$s);
$s = str_replace(array('Á','À','Â','Ã'),"A",$s);
$s = str_replace(array('Í','Ì','Î'),"I",$s);
$s = str_replace(array('í','ì','î'),"i",$s);
$s = str_replace(array('é','è','ê'),"e",$s);
$s = str_replace(array('É','È','Ê'),"E",$s);
$s = str_replace(array('ó','ò','ô','õ','º'),"o",$s);
$s = str_replace(array('Ó','Ò','Ô','Õ'),"O",$s);
$s = str_replace(array('ú','ù','û'),"u",$s);
$s = str_replace(array('Ú','Ù','Û'),"U",$s);
$s = str_replace("ç","c",$s);
$s = str_replace("Ç","C",$s);
$s = str_replace("[ñ]","n",$s);
$s = str_replace("[Ñ]","N",$s);
return $s;
}
q datisimo, super bn me sirvio de una, pero la opcion de php5
ResponderEliminar