Foros del Web » Programando para Internet » PHP »

Problema con Acentos

Estas en el tema de Problema con Acentos en el foro de PHP en Foros del Web. Hola, tengo un problema con los acentos. El caso es que para guardar el código a mi base de datos utilizo "htmlentities($valor)" Y para mostrarlo ...
  #1 (permalink)  
Antiguo 15/06/2010, 05:40
Avatar de Flow89  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 346
Antigüedad: 14 años
Puntos: 1
Problema con Acentos

Hola, tengo un problema con los acentos.

El caso es que para guardar el código a mi base de datos utilizo
"htmlentities($valor)"

Y para mostrarlo en mi página web
"html_entity_decode($valor)"


Imaginemos que esa variable tiene este contenido.
$valor = "Hola, á con acento"

Entonces no hay ningun problema, sustituye el codigo y muestra el acento.

El problema viene cuando la variable contiene esto;
$valor = "Á ahora el acento es la prmera letra".


Tengo un código, que lo que hace es cambiar el formato a las variables. A la primera letra le da un color y a el resto otro, os dejo el código:

Código PHP:
while($row=mysql_fetch_array($subvenciones)){
   
$titulo html_entity_decode($row[titulo]);
   
$letra $titulo{0};
   
$resto substr($titulo1);
   
$letra "<span class=\"topNrosa\">"$letra"</span>";
   
$resto "<span class=\"topNnormal\">"$resto"</span>";
   
$final $letra.$resto

echo 
$final

El problema es que no me sale la letra con le acento, sino el &eAcuote; Siempre y cuando la que tenga acento sea la primera, en el resto lo hace bien.



Que puedo hacer?



Un saludo.
__________________
Seamos realistas. Busquemos lo imposible. ;)
La forma de dar las gracias en este foro, es dando Karma, aunque a veces con un simple Gracias, basta.
  #2 (permalink)  
Antiguo 16/06/2010, 01:17
 
Fecha de Ingreso: abril-2010
Mensajes: 17
Antigüedad: 14 años
Puntos: 0
Respuesta: Problema con Acentos

Suena a que es un problema de codificaciones. Mira a ver de utilizar UTF-8 y con ello utf8_decode y utf8_encode. Es lo que casi siempre he utilizado yo.
  #3 (permalink)  
Antiguo 16/06/2010, 01:24
Avatar de Flow89  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 346
Antigüedad: 14 años
Puntos: 1
Respuesta: Problema con Acentos

No, creo que no tiene nada que ver con la codificación, pues en la letra de mitad de la frase pone el acento sin problemas.

El caso es que parece hacer caso omiso a el cambio, mostrandome por ejemplo

&ampcuote;ltimo ejemplo aquí.

cuando debería mostrarme

Último ejemplo aquí.


Es decir, hace caso omiso a la instrucción
$titulo = html_entity_decode($row[titulo]);

Y lo que me pone de color es la primera letra es decir el &
__________________
Seamos realistas. Busquemos lo imposible. ;)
La forma de dar las gracias en este foro, es dando Karma, aunque a veces con un simple Gracias, basta.
  #4 (permalink)  
Antiguo 16/06/2010, 02:34
Avatar de Flow89  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 346
Antigüedad: 14 años
Puntos: 1
Respuesta: Problema con Acentos

He estado leyendo, y estoy en lo cierto, al guardarlo en la BBDD pasandolo por htmlentities(), para sacarlo de la BBDD y que salga correcto hay que aplicarle un html_entity_decode().

El caso es.. ¿porque no funciona en la primera letra y en el resto si?

He pensado y.. alomejor es que pone el color y todo eso, entonces al intentar traducirlo no sabe que codigo es... pero joder, esta antes la instrucción de traducir la letra a la correspondiente, y luego ya poner el color..

A ver si alguien me puede echar una manilla.. que es bastante importante la verdad :S
__________________
Seamos realistas. Busquemos lo imposible. ;)
La forma de dar las gracias en este foro, es dando Karma, aunque a veces con un simple Gracias, basta.
  #5 (permalink)  
Antiguo 16/06/2010, 02:35
Avatar de Heli0s  
Fecha de Ingreso: abril-2010
Mensajes: 789
Antigüedad: 14 años
Puntos: 40
Respuesta: Problema con Acentos

¿En el código fuente de la página que es lo que hay? Pone &Uacute;ltimo o pone Último?
  #6 (permalink)  
Antiguo 16/06/2010, 02:45
Avatar de Flow89  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 346
Antigüedad: 14 años
Puntos: 1
Respuesta: Problema con Acentos

&Uacute;ltimo

Eso es lo que pone en el codigo fuente.


Bueno, entre el & salen los <span> para darle color y eso xD


^^ Hola de nuevo Heli0s :p
__________________
Seamos realistas. Busquemos lo imposible. ;)
La forma de dar las gracias en este foro, es dando Karma, aunque a veces con un simple Gracias, basta.
  #7 (permalink)  
Antiguo 16/06/2010, 02:54
Avatar de Heli0s  
Fecha de Ingreso: abril-2010
Mensajes: 789
Antigüedad: 14 años
Puntos: 40
Respuesta: Problema con Acentos

Creo que el problema está en que de alguna manera pasas dos veces por la funcion htmlentities, entonces traduce "&Uacute;ltimo", por lo tanto el & se traduce a &amp; y ya no te pone el acento, vigila todas las veces que usas esa función.
  #8 (permalink)  
Antiguo 16/06/2010, 03:45
Avatar de Flow89  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 346
Antigüedad: 14 años
Puntos: 1
Respuesta: Problema con Acentos

Pfffff no me carga la página!! xD

He estado mirando, y podía ser eso, pero no... queda descartado.. he intentado incluso pasandole 2 veces por html_entity_decode, pero nada, incluso he borrado el htmlentities que tenia porque me di cuenta que en el modulo de seguridad que me pasaste estaba puesto ya.. pero ni aún así..
__________________
Seamos realistas. Busquemos lo imposible. ;)
La forma de dar las gracias en este foro, es dando Karma, aunque a veces con un simple Gracias, basta.
  #9 (permalink)  
Antiguo 16/06/2010, 05:47
Avatar de Flow89  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 346
Antigüedad: 14 años
Puntos: 1
Respuesta: Problema con Acentos

Por más que intento cosas no consigo nada, os dejo los códigos a ver si veis algo..

index.php
Código PHP:
include ("conex.php");
      include (
"segu.php");
      
//hacemos las consultas
      
$noticias=mysql_query("select * from noticias order by fecha Desc limit 5"$connect);
      
$totalnoticias=mysql_num_rows($noticias);

//Editamos el titulo para que lo muestre a nuestro gusto
while($row=mysql_fetch_array($noticias)){
   
$titulo html_entity_decode($row[titulo]);
   
$letra $titulo{0};
   
$resto substr($titulo1);
   
$letra "<span class=\"Estilo35\">"$letra"</span>";
   
$resto "<span class=\"Estilo14\">"$resto"</span>";
   
$final $letra.$resto;
 
 

//Imprimimos los resultados.
   
echo "<img src=\"imagenes/prueba2.png\" width=\"50\" height=\"50\">" .$final."<br><p>" .html_entity_decode($row[noticia])."</p><br><div align=\"center\" class=\"Estilo39\"> Por: ".$row[autor]." - "
      
.date("d-m-Y",$row[fecha])." - Categoria: ".html_entity_decode($row[categoria])." </div><br><div align=\"center\"><img src=\"imagenes/separador.png\" width=\"400\" height=\"15\"></div>";

procesanoticia.php
Código PHP:
    //incluimos el archivo de conexion
    
include ("conex.php");

      
//recibimos las variables enviadas por el formulario y limpiandolas
      
$titulo$_POST[titulo];
      
$autorhtmlentities($_POST[autor]);
      
$categoriahtmlentities($_POST[categoria]);
      
$articulo=$_POST[articulo];
      
$now time();

      
//insertamos los registros almacenados en las variables
      
mysql_query("insert into noticias(autor,titulo,categoria,fecha,noticia) 
      values('$autor','$titulo','$categoria','$now','$articulo')"
,$connect); 
      
header("location: ../loginpanel/administracion.php"); 
segu.php
Código PHP:
 function getClearString($var){
    if(!
is_array($var)){
        return 
addslashes(stripslashes(htmlentities($var)));
    } else {
        return 
$var;
    }
}
if(
is_array($_GET))
$_GET array_map("getClearString"$_GET);
if(
is_array($_POST))
$_POST array_map("getClearString"$_POST);
if(
is_array($_COOKIE))
$_COOKIE array_map("getClearString"$_COOKIE);
if(
is_array($_SESSION))
$_SESSION array_map("getClearString"$_SESSION); 

A ver si con esto me podéis echar una mano y conseguimos arreglarlo.. :S
__________________
Seamos realistas. Busquemos lo imposible. ;)
La forma de dar las gracias en este foro, es dando Karma, aunque a veces con un simple Gracias, basta.

Última edición por Flow89; 17/06/2010 a las 01:35
  #10 (permalink)  
Antiguo 16/06/2010, 05:48
Avatar de Heli0s  
Fecha de Ingreso: abril-2010
Mensajes: 789
Antigüedad: 14 años
Puntos: 40
Respuesta: Problema con Acentos

Tienes que poner todos los códigos que usa esa página para poder ver que es lo que pasa
  #11 (permalink)  
Antiguo 16/06/2010, 05:49
Avatar de Heli0s  
Fecha de Ingreso: abril-2010
Mensajes: 789
Antigüedad: 14 años
Puntos: 40
Respuesta: Problema con Acentos

Categoria es procesado dos veces por htmlentities, que campo es el que se muestra mal?
  #12 (permalink)  
Antiguo 17/06/2010, 01:31
Avatar de Flow89  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 346
Antigüedad: 14 años
Puntos: 1
Respuesta: Problema con Acentos

Cita:
Iniciado por Heli0s Ver Mensaje
Categoria es procesado dos veces por htmlentities, que campo es el que se muestra mal?
Se muestra mal el título y solo cuando el primer caracter tiene acento. Es decir el caracter que debe ponerse en otro color.

El resto salen bien.
__________________
Seamos realistas. Busquemos lo imposible. ;)
La forma de dar las gracias en este foro, es dando Karma, aunque a veces con un simple Gracias, basta.
  #13 (permalink)  
Antiguo 17/06/2010, 02:23
Avatar de Heli0s  
Fecha de Ingreso: abril-2010
Mensajes: 789
Antigüedad: 14 años
Puntos: 40
Respuesta: Problema con Acentos

Haz un echo al string antes de poner $letra = $titulo{0}; y verás como el primer carácter no es una letra, ten en cuenta que al poner un acento y pasarlo por htmlentities hara que sea &letraacute;elresto y el primer caracter será &, por lo tanto después al usar la función substr sacará todo el string excepto el caracter &, que es lo que esta provocando el fallo, y por eso solo ocurre cuando hay un acento en la primera letra, la solución creo que es que te esperes a usar htmlentities justo cuando ya esté lista para mostrar.

Un saludo
  #14 (permalink)  
Antiguo 17/06/2010, 03:45
Avatar de Flow89  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 346
Antigüedad: 14 años
Puntos: 1
Respuesta: Problema con Acentos

No me he enterado muy bien de cual es la solucion... XD
__________________
Seamos realistas. Busquemos lo imposible. ;)
La forma de dar las gracias en este foro, es dando Karma, aunque a veces con un simple Gracias, basta.
  #15 (permalink)  
Antiguo 17/06/2010, 04:00
Avatar de Heli0s  
Fecha de Ingreso: abril-2010
Mensajes: 789
Antigüedad: 14 años
Puntos: 40
Respuesta: Problema con Acentos

Código PHP:
while($row=mysql_fetch_array($subvenciones)){
   
$titulo $row[titulo];
   
$letra $titulo{0};
   
$resto substr($titulo1);
   
$letra "<span class=\"topNrosa\">"html_entity_decode($letra). "</span>";
   
$resto "<span class=\"topNnormal\">"html_entity_decode($resto). "</span>";
   
$final $letra.$resto

echo 
$final
  #16 (permalink)  
Antiguo 17/06/2010, 05:01
Avatar de Flow89  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 346
Antigüedad: 14 años
Puntos: 1
Respuesta: Problema con Acentos

Cita:
Iniciado por Heli0s Ver Mensaje
Código PHP:
while($row=mysql_fetch_array($subvenciones)){
   
$titulo $row[titulo];
   
$letra $titulo{0};
   
$resto substr($titulo1);
   
$letra "<span class=\"topNrosa\">"html_entity_decode($letra). "</span>";
   
$resto "<span class=\"topNnormal\">"html_entity_decode($resto). "</span>";
   
$final $letra.$resto

echo 
$final

Ok gracias Heli0s lo pruebo y te cuento ;)
__________________
Seamos realistas. Busquemos lo imposible. ;)
La forma de dar las gracias en este foro, es dando Karma, aunque a veces con un simple Gracias, basta.
  #17 (permalink)  
Antiguo 17/06/2010, 05:06
Avatar de Flow89  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 346
Antigüedad: 14 años
Puntos: 1
Respuesta: Problema con Acentos

Cita:
Iniciado por Flow89 Ver Mensaje
Ok gracias Heli0s lo pruebo y te cuento ;)

Ahora me muestra

&amp;Uacute;

Yo creo que hemos echo todo lo contrario.

El caso es que el script para cambiar de color coja la letra ya con el acento, y la cambie de color.
De la manera que lo hemos echo lo que hace es intentar traducir por un lado el &, y por el otro el letracute; no?

Un saludo.
__________________
Seamos realistas. Busquemos lo imposible. ;)
La forma de dar las gracias en este foro, es dando Karma, aunque a veces con un simple Gracias, basta.
  #18 (permalink)  
Antiguo 17/06/2010, 07:21
Avatar de Heli0s  
Fecha de Ingreso: abril-2010
Mensajes: 789
Antigüedad: 14 años
Puntos: 40
Respuesta: Problema con Acentos

Prueba a quitar la funcion html_entity_decode, no la uses.
  #19 (permalink)  
Antiguo 18/06/2010, 01:27
Avatar de Flow89  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 346
Antigüedad: 14 años
Puntos: 1
Respuesta: Problema con Acentos

Cita:
Iniciado por Heli0s Ver Mensaje
Prueba a quitar la funcion html_entity_decode, no la uses.
Ya lo probé, y aparece &amp;letracute;

=/
__________________
Seamos realistas. Busquemos lo imposible. ;)
La forma de dar las gracias en este foro, es dando Karma, aunque a veces con un simple Gracias, basta.
  #20 (permalink)  
Antiguo 18/06/2010, 05:03
Avatar de zerpico_01  
Fecha de Ingreso: enero-2008
Ubicación: Wilde - Avellaneda -
Mensajes: 421
Antigüedad: 16 años, 3 meses
Puntos: 13
Respuesta: Problema con Acentos

post yo tube problemas similares asi lo solucione

http://www.forosdelweb.com/f18/duda-...e-help-781529/


aqui post la solucion definitiva!
http://www.forosdelweb.com/f18/reemp...in-uf8-787899/

(a un que muchos la criticaron funciona

por otra parte creo que en algun lado el codigo esta pasando a mayusculas mira en todo tu codigo si las variables son pasadas por --> ucwords o usa strtolower y luego vuelvela a mayuscula a la primera ....

pero usa mi funcion para tu problema !!

saludos!!!

Etiquetas: acentos
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:41.