Foros del Web » Programando para Internet » PHP »

Problema con tilde y PHP

Estas en el tema de Problema con tilde y PHP en el foro de PHP en Foros del Web. Hola, os expongo mi situacion: Tengo un script que toma cadenas de texto de una base de datos y rellena un vector poniendo como indice ...
  #1 (permalink)  
Antiguo 20/09/2007, 10:42
 
Fecha de Ingreso: abril-2004
Ubicación: Valencia
Mensajes: 436
Antigüedad: 20 años
Puntos: 8
Problema con tilde y PHP

Hola, os expongo mi situacion:
Tengo un script que toma cadenas de texto de una base de datos y rellena un vector poniendo como indice la cadena de texto, y como valor, un numero asociado a la cadena. El problema es que al acceder a los valores del vector, falla en aquellos cuyo indice tiene una tilde. Me explico con un ejemplo.

Tenemos una base de datos que tiene una tabla con 2 columnas, la primera de parametros y la segunda con los valores de los parametros:

TABLA
-------------------
Batería 5
Tensión 15
Temperatura 67

Pues bien, mi script coge esta tabla y crea un vector poniendo como indice el nombre del parametro y como valor, el valor del parametro:

$vector["Batería"]=5;
$vector["Tensión"]=15;
$vector["Temperatura"]=67;

Pues bien, en el momento de acceder al vector e imprimir los valores asi:

print($vector["Batería"]);
print($vector["Tensión"]);
print($vector["Temperatura"]);

Me muestra todos los valores correctamente salvo los de los indices que tienen tilde que en este ejemplo serian "Batería" y "Tensión".
Como puedo solucionar esto??

Bueno añadir solo que la base de datos no puedo ni tocarla, de modo que cambiar el nombre de los campos y quitar las tildes en la BD no es una opcion.

Gracias de antemano, y un saludo a los foreros.
  #2 (permalink)  
Antiguo 20/09/2007, 11:00
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 8 meses
Puntos: 2114
Re: Problema con tilde y PHP

Si no puedes tocar la base de datos, toca los valores de ellos. Cambia las tildes por vocales sin tilde con str_replace.

Algo así:
Código PHP:
function quitaTildes($str) {
$tildes=array('á','é','í','ó','ú');
$vocales=array('a','e','i','o','u');
str_replace($vocales,$tildes,$str);
return 
$str;

Tendrías que añadir también las mayúsculas.
  #3 (permalink)  
Antiguo 20/09/2007, 12:42
 
Fecha de Ingreso: abril-2004
Ubicación: Valencia
Mensajes: 436
Antigüedad: 20 años
Puntos: 8
Re: Problema con tilde y PHP

Gracias, por la respuesta,
posiblemente sea esa la unica opcion, porque no se si php trata bien las cadenas con tildes, pero ya manejar indices que contengan tildes me pareceria mucho jejeje.
Gracias.
  #4 (permalink)  
Antiguo 20/09/2007, 18:55
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 19 años, 1 mes
Puntos: 17
Re: Problema con tilde y PHP

PHP 5 creo que se lleva bien con los tildes... igualmente no es recomendado usarlos para lo que sea código
  #5 (permalink)  
Antiguo 20/09/2007, 19:02
 
Fecha de Ingreso: marzo-2005
Ubicación: Sevilla
Mensajes: 277
Antigüedad: 19 años, 1 mes
Puntos: 2
Re: Problema con tilde y PHP

yo use un script exactamente igual que el tuyo.
el problema real que me encontré era que al usuario meter la cadena de texto, para evitar que pudiera introducir codigo html, la pasaba por el htmlentities.

El rpoblema real no me lo da en las tildes, es decir algo["batería"] sí que me funcionaba.
Lo que ocurre esque donde tu ves batería, realmente ponia batería
y ya meter un ; y un & por medio, pues ya se jodía. Lo solucione quitando el filtro, y sin pasar las cadenas por htmlentities.
  #6 (permalink)  
Antiguo 21/09/2007, 02:49
 
Fecha de Ingreso: abril-2004
Ubicación: Valencia
Mensajes: 436
Antigüedad: 20 años
Puntos: 8
Re: Problema con tilde y PHP

Entiendo lo que dices, pero en mi caso se hace todo al margen del html porque es automatico, es decir el usuario no elige nada de modo que los codigos acute para las tildes no se usan. Me imagino que realmente el problema sera que no es capaz de manejar indices de vectores con tildes, problema que por otra parte me parece bastante logico.
  #7 (permalink)  
Antiguo 21/09/2007, 03:59
 
Fecha de Ingreso: septiembre-2007
Mensajes: 33
Antigüedad: 16 años, 7 meses
Puntos: 1
Re: Problema con tilde y PHP

En bases de datos es mejor no usar tildes, sobretodo para cuando hacer importaciones, exportaciones... etc
  #8 (permalink)  
Antiguo 21/09/2007, 09:09
 
Fecha de Ingreso: abril-2004
Ubicación: Valencia
Mensajes: 436
Antigüedad: 20 años
Puntos: 8
Re: Problema con tilde y PHP

Pues el problema no se resuelve, utilizando str_replace he comprobado que sustituye cualquier letra correctamente excepto aquellas que tienen tilde. Lo curioso es que si le digo que sustituya las vocales sin tilde por vocales con tilde si que funciona. Alguna idea??

Gracias, saludos.

PS: respecto a la base de datos, como ya dije no puedo modificar nada.
  #9 (permalink)  
Antiguo 23/09/2007, 18:34
 
Fecha de Ingreso: marzo-2005
Ubicación: Sevilla
Mensajes: 277
Antigüedad: 19 años, 1 mes
Puntos: 2
Re: Problema con tilde y PHP

mira... prueba con esta funcion:

Código:
function quita($s) {


   $s = ereg_replace("[áàäâ]","a",$s);
   $s = ereg_replace("[éèëê]","e",$s);
   $s = ereg_replace("[íìïî]","i",$s);
   $s = ereg_replace("[óòöô]","o",$s);
   $s = ereg_replace("[úùüû]","u",$s);
   $s = str_replace("Ç","c",$s);
   $s = str_replace("ç","c",$s);
   return $s;
}
Un saludo.

PD: Faltan las mayusculas (yo hacia antes un strtolower($s)), es lo mismo pero cambiandolas por letras mayusculas:
ejemplo:
$s=ereg_replace("[ÁÀÄÂ]","A",$s);
  #10 (permalink)  
Antiguo 24/09/2007, 01:49
 
Fecha de Ingreso: abril-2004
Ubicación: Valencia
Mensajes: 436
Antigüedad: 20 años
Puntos: 8
Re: Problema con tilde y PHP

Hola,
gracias por la ayuda pero tambien probé con ereg_replace y tampoco me funcionaba. En cualquier caso lo he solucionado. Bueno a decir verdad no es una solucion, sino un parche, cosa que no me gusta mucho, pero en fin... es lo que hay.
La solucion que he adoptado ha sido que para los pocos indices que hay con tilde en el vector, accedo directamente por el numero es decir, en vez de $vect["Batería"] accedo a $vect[8] por ejemplo. Es una pena porque me habia quedado todo muy elegante, pero bueno, funciona exactamente igual...
Gracias a todos y un saludo.
  #11 (permalink)  
Antiguo 30/05/2011, 05:05
 
Fecha de Ingreso: mayo-2011
Mensajes: 1
Antigüedad: 12 años, 10 meses
Puntos: 0
Respuesta: Problema con tilde y PHP

Hola a todos,

Se que este post es muyyyyyyyyyyyyy viejo, pero a mi me pasó hoy lo mismo: No me hacía el str_replace la función correcta de cambiar las tildes.

Dándole al coco me he dado cuenta de lo que pasa: Tenía puesto en mi editor dreamweaver la codificación como Europeo Occidental. Hay que cambiarlo por Unicode(UTF-8). En Dreamweaver CS3 está en Modify, Page properties, Title/Encoding. Lo pongo en inglés porque es en el idioma que lo tengo. Supongo que el CS5 será parecido, y si usaís otro editor no se como sería la configuración.

Una vez hecho esto funciona correctamente.

Quería añadir que este es mi primer post, pero siempre me es de mucha ayuda este foro para resolver las dudas que tengo. Quisiera dar las gracias a todos los que habeis contribuido y lo seguis haciendo en este foro, tanto a los que solo les dais uso como a los que trabajais en el.
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 15:19.