Foros del Web » Programación para mayores de 30 ;) » Programación General »

xml y acentos: ¡socorro!

Estas en el tema de xml y acentos: ¡socorro! en el foro de Programación General en Foros del Web. Hola a todos. Me pregunto si alguien me podría ayudar en esto: - tengo un formulario en PHP que permite agregar registros a una base ...
  #1 (permalink)  
Antiguo 18/01/2006, 05:13
 
Fecha de Ingreso: enero-2006
Mensajes: 7
Antigüedad: 18 años, 3 meses
Puntos: 0
xml y acentos: ¡socorro!

Hola a todos. Me pregunto si alguien me podría ayudar en esto:
- tengo un formulario en PHP que permite agregar registros a una base de datos MySQL
- a la vez que añade el registro, actualiza un fichero XML (que a su vez es leído por Flash para mostrar los resultados)
- puedo visualizar mediante HTML/PHP vocales acentuadas sin problemas, e incluso desde PHPMyAdmin se ven sin problemas
- el problema surge a la hora de escribir el XML, ya que veo Ã-* en vez de í, o más en vez de más; lógicamente, cuando Flash lo carga también se ve mal
- la estructura del XML es así:
<?xml version="1.0" encoding="iso-8859-1"?>
<nivel>
<grupo> <datos cabecera='mÃ-*a' mensaje='más' />
</grupo>
</nivel>
- he probado poniendo iso-8859-1, es-utf-8 y utf-8, pero da lo mismo
- por cierto, en local no ocurre, sólo en remoto; el PHP de mi servidor es v. 4.4.1

Llevo días mirando foros y leyendo artículos, y de verdad por dónde seguir. Agradezco mucho cualquier sugerencia.
Gracias a todos.
  #2 (permalink)  
Antiguo 18/01/2006, 05:21
Avatar de Rumailster  
Fecha de Ingreso: enero-2006
Ubicación: Barakaldo, Bizkaia
Mensajes: 92
Antigüedad: 18 años, 3 meses
Puntos: 0
Hola,

yo lo he conseguido solucionar utilizando esta funcion basada en entidades basadas en la representacion decimal de los caracteres:


function cambio_texto ($texto)
{
$n_texto=ereg_replace("á","& #224;",$texto);
$n_texto=ereg_replace("é","& #233;",$n_texto);
$n_texto=ereg_replace("í","& #237;",$n_texto);
$n_texto=ereg_replace("ó","& #243;",$n_texto);
$n_texto=ereg_replace("ú","& #250;",$n_texto);

$n_texto=ereg_replace("Á","& #193;",$n_texto);
$n_texto=ereg_replace("É","& #201;",$n_texto);
$n_texto=ereg_replace("Í","& #205;",$n_texto);
$n_texto=ereg_replace("Ó","& #211;",$n_texto);
$n_texto=ereg_replace("Ú","& #218;",$n_texto);

$n_texto=ereg_replace("ñ", "& #241;", $n_texto);

$n_texto=ereg_replace("Ñ", "& #209;", $n_texto);

$n_texto=ereg_replace("¿", "& #191;", $n_texto);


return $n_texto;
}

no utilizes espacios entre el & y el #.!!!

espero que te sirva, saludos.

Última edición por Rumailster; 18/01/2006 a las 05:26
  #3 (permalink)  
Antiguo 18/01/2006, 05:27
 
Fecha de Ingreso: enero-2006
Mensajes: 7
Antigüedad: 18 años, 3 meses
Puntos: 0
vaya lío...

Muchas gracias por tu rápida respuesta Rumailster. Me temo que no la he entendido muy bien. Llevo en esto del PHP muy poco y aún me queda mucho por aprender.
1- ¿Dónde debo colocar la función de la que me hablas? Entiendo que en el PHP que genera el XMl, pero en qué parte del código?
2- ¿sería mucho pedir un ejemplo? No sé muy bien cómo usar:
$n_texto=ereg_replace("¿", "¿", $n_texto);

es decir, si quiero que en vez de Ã*- me aparezca í, qué escribo exactamente?

Perdona tanta pregunta de novatillo, pero de verdad que estoy desesperado, porque nadie parece conocer la solución a mi problema.

Gracias de verdad.
  #4 (permalink)  
Antiguo 18/01/2006, 05:30
 
Fecha de Ingreso: enero-2006
Mensajes: 7
Antigüedad: 18 años, 3 meses
Puntos: 0
vamos avanzando

Hola de nuevo. Ya entiendo la sintaxis. Ahora la pregunta del millón: ¿dónde coloco el código?
Gracias mil.
  #5 (permalink)  
Antiguo 18/01/2006, 05:42
Avatar de Rumailster  
Fecha de Ingreso: enero-2006
Ubicación: Barakaldo, Bizkaia
Mensajes: 92
Antigüedad: 18 años, 3 meses
Puntos: 0
Se trata de una funcion que puedes colocar fuera - y hacer llamada con include - o mas fácil en cualquier parte de tu pagina php.

luego, para hacer llamada a esta funcion haz esto.

cambio_texto($tu_texto);

donde $tu_texto; será la variable que recoge el texto que quieres modificar.
  #6 (permalink)  
Antiguo 18/01/2006, 05:53
 
Fecha de Ingreso: enero-2006
Mensajes: 7
Antigüedad: 18 años, 3 meses
Puntos: 0
gracias mil

Lo he probado y parece que funciona. No te imaginas qué favor me has hecho. Gente como tú hace de Internet algo grande.
Mil gracias otra vez.
  #7 (permalink)  
Antiguo 18/01/2006, 05:57
 
Fecha de Ingreso: enero-2006
Mensajes: 7
Antigüedad: 18 años, 3 meses
Puntos: 0
Duda de última hora

Por cierto, y si quiero incluir 2 variables? (En caso de que quiera almacenar los resultados de dos campos de la base de datos, por ejemplo 'nombre' y 'apellido'). Es decir, si tengo $nombre y $apellido, ¿como queda ereg replace?
Gracias de nuevo!!
  #8 (permalink)  
Antiguo 18/01/2006, 06:01
Avatar de Rumailster  
Fecha de Ingreso: enero-2006
Ubicación: Barakaldo, Bizkaia
Mensajes: 92
Antigüedad: 18 años, 3 meses
Puntos: 0
De nada, a mi tambien me han ayudado infinidad de veces.

Bueno puedes utilizar la funcion ereg_replace por separado para cada variable pero quizas sea mejor unir en una unica variable nombre y apellidos y luego pasarle la funcion.

Un saludo.
  #9 (permalink)  
Antiguo 18/01/2006, 10:16
 
Fecha de Ingreso: enero-2006
Mensajes: 7
Antigüedad: 18 años, 3 meses
Puntos: 0
ok

Entendido. Gracias por última vez.
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 08:53.