Foros del Web » Programando para Internet » PHP »

Acentos y caracteres especiales

Estas en el tema de Acentos y caracteres especiales en el foro de PHP en Foros del Web. Saludos a todos, Nuevamente yo con una duda, resulta que tengo la siguiente función que se encarga de eliminar los acentos: <? function limpiar_caracteres_especiales($s) { ...
  #1 (permalink)  
Antiguo 03/03/2011, 14:33
 
Fecha de Ingreso: septiembre-2010
Ubicación: Puebla
Mensajes: 14
Antigüedad: 13 años, 7 meses
Puntos: 0
Acentos y caracteres especiales

Saludos a todos,

Nuevamente yo con una duda, resulta que tengo la siguiente función que se encarga de eliminar los acentos:

<?
function limpiar_caracteres_especiales($s)
{
$s = ereg_replace("[áàâãª]","a",$s);
$s = ereg_replace("[ÁÀÂÃ]","A",$s);
$s = ereg_replace("[éèê]","e",$s);
$s = ereg_replace("[ÉÈÊ]","E",$s);
$s = ereg_replace("[íìî]","i",$s);
$s = ereg_replace("[ÍÌÎ]","I",$s);
$s = ereg_replace("[óòôõº]","o",$s);
$s = ereg_replace("[ÓÒÔÕ]","O",$s);
$s = ereg_replace("[úùû]","u",$s);
$s = ereg_replace("[ÚÙÛ]","U",$s);
$s = str_replace("ñ","n",$s);
$s = str_replace("Ñ","N",$s);
return $s;
}

echo limpiar_caracteres_especiales('Niño Bónító');
?>

La función si me elimina los acentos pero me da resultados algo extraños, la prueba anterior me da como resultado: Nia±o Baonaitao

Y si pruebo con la cadena 'á é í ó ú' el resultado es 'aa ae ai ao ao' la 'a' la repite cada vez que quita un acento, la 'ú' ni la vio y si la vio la reemplazo por una 'o'

¿Alguien sabe porqué y qué hacer para resolverlo?

Nota: el asunto es simple, quiero quitar acentos y caracteres especiales a las cadenas de texto porque contienen direcciones que serán geocodificadas por medio del google geocoder para obtener la latitud y longitud. Aparentemente el geocodificador no puede leer acentos ni caracteres especiales y arroja error cada vez que alguien ingresa algo como "Av. Benito Júarez Nº 1230 Col. Valparaíso, Zacatlán" o "Av. Benito Juárez #1230 Col. Valparaíso, Zacatlán" es por eso que quiero convertirlo a "Av Benito Juarez 1230 Col Valparaiso Zacatlan" que no me genera problemas al geocodificarlo.

Esto genera dos preguntas:

1. ¿Cómo puedo mejorar el código anterior para que haga lo que quiero?
o bien,
2. ¿Alguien sabe como geocodificar sin que los acentos o caracteres especiales afecten el proceso?

Naturalmente con responder sólo una de las dos preguntas bastará de modo que espero su ayuda.
  #2 (permalink)  
Antiguo 03/03/2011, 14:43
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años
Puntos: 528
Respuesta: Acentos y caracteres especiales

Te recomiendo mejor usar
$micadena=utf8_encode($micadena); o bien $micadena=utf8_decode($micadena);

según sea el caso, ya que ir agregando caracteres a reemplazar es tarea de no acabar. Por otro lado te sugiero leer algo sobre sets de caracteres, que es la raíz de tu problema.
  #3 (permalink)  
Antiguo 03/03/2011, 14:44
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años
Puntos: 528
Respuesta: Acentos y caracteres especiales

Perdón, con mi mala conexión se repitió el post.
  #4 (permalink)  
Antiguo 03/03/2011, 14:57
 
Fecha de Ingreso: septiembre-2010
Ubicación: Puebla
Mensajes: 14
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Acentos y caracteres especiales

Uhm... si eso de agregar caracteres apesta... por otra parte no me queda muy claro como aplicarías tu propuesta, lo intenté pero no logre gran cosa ya que en ambos casos reemplaza la letra con tilde por caracteres especiales: Juárez se vuelve JuÄ!rez o Ju?z... podemos eliminarlos, claro está pero entonces ya no será Juárez será Jurez o Juz.

Si el asunto esta en los set de caracteres pero necesito usar iso-8859-1 porque si no nunca voy a ver los acentos de mi sitio (ya tuve este problema) ¿o existe alguna otra opción?

Me voy a poner a leer, claro que sí, desafortunadamente no tengo mucho tiempo por ahora pues esto debe quedar listo para ayer y es la hora que no logro terminarlo... ¿algun consejo veloz?
  #5 (permalink)  
Antiguo 03/03/2011, 15:11
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años
Puntos: 528
Respuesta: Acentos y caracteres especiales

En el html debes definir el set a usar, por ejemplo:
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
y formatea todas tus salidas a utf8 mediante el utf8_encode,
o bien indica otro set, como iso-8859-1, y formatea todas tus salidas con el utf8_decode. aunque dependerá mucho de la fuente de los datos, ya que también interviene si la tabla de BD está en utf8 o el iso.
  #6 (permalink)  
Antiguo 03/03/2011, 17:08
 
Fecha de Ingreso: marzo-2009
Mensajes: 44
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: Acentos y caracteres especiales

Como dice ocp001a, te recomiendo que pongas TODO en UTF-8, tanto el charset, la base de datos (utf-8_bin) y los archivos. Así te evitarás todo el lío del utf8_decode =).

Etiquetas: acentos, caracteres, especiales
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:06.