Foros del Web » Programando para Internet » PHP »

Problemo con los acentos=acute

Estas en el tema de Problemo con los acentos=acute en el foro de PHP en Foros del Web. Hola tengo un lector de paginas RSS en php que estoy haciendo estos dias y tengo un problema, en el codigo del php utilizo la ...
  #1 (permalink)  
Antiguo 21/04/2005, 04:50
 
Fecha de Ingreso: junio-2004
Mensajes: 51
Antigüedad: 19 años, 10 meses
Puntos: 0
Problemo con los acentos=acute

Hola

tengo un lector de paginas RSS en php que estoy haciendo estos dias y tengo un problema, en el codigo del php utilizo la variable htmlspecialchars() (tambien he probado htmlentities()) y va bien en todos los RSS menos en uno

uno de los que fuciona bien es este: http://www.fran206.com/noticias/maestros.php
y su rss es http://www.maestrosdelweb.com/index.xml

el que funciona mal es el de marca: http://www.fran206.com/noticias/marca.php
y su RSS
http://abraldes.net/feeds/marca.xml

en el rss de cada uno, si te fijas en el de maestros aparecen en ya sea en el titulo o en la descripcion las tildes a pelo, pero en el de marca aparecen condificadas.

¿Alguien sabe como podria hacer para que me aparecerian las tilde y demsa caracteres bien?

Gracias
  #2 (permalink)  
Antiguo 21/04/2005, 07:34
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 5 meses
Puntos: 34
No se ve la página, y no comprendo bien cual es tu problema. Hay dos casos, uno es que cuando querés pasar una minuscula acentuada a mayuscula, esta no se pase con strtoupper, la otra es que esta letra, sin ser pasada por ninguna función, aparezca de manera rara (caracteres no válidos).
Si es la primera deberás usar algo como:

Código PHP:
function upper($str){
$uno "abcdefghijklmnñopqrstuvwxyzáéíóúü";
$dos "ABCDEFGHIJKLMNÑOPQRSTUVWXYZÁÉÍÓÚÜ";
return 
strtr($str,"$uno","$dos"); 

Si es la segunda, seguramente tus probelmas esten en el tipo de archivo, intenta forzandolos con unos head como estos:

Código PHP:
header("Content-type: text/html; encoding: UTF-8");
iconv_set_encoding('internal_encoding''utf-8'); 
Otros casos no conozco.
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #3 (permalink)  
Antiguo 21/04/2005, 09:48
 
Fecha de Ingreso: junio-2004
Mensajes: 51
Antigüedad: 19 años, 10 meses
Puntos: 0
uy, lo siento, estaba haciendo pruebas y la pagina en ese momento me daba error 500.

He mirado aglo mas por la pagina de php, lo de las mayusculas no es, el problema es que tengo que pasar por ejemplo de:
Aguirre: "Me voy contento con el resultado, pero será difícil"
a
Aguirre: "Me voy contento con el resultado, pero será difícil"

he encontrado la funcion html_entity_decode() que lo hace

Cita:
<?php
$orig = 'Aguirre: "Me voy contento con el resultado, pero ser&aacute; dif&iacute;cil"';

$b = html_entity_decode($orig);

echo $orig; // Aguirre: "Me voy contento con el resultado, pero ser&aacute; dif&iacute;cil"

echo $b; // Aguirre: "Me voy contento con el resultado, pero será difícil"

?>
http://www.fran206.com/noticias/deco.php

pero ahora viene el problema, en el codigo que pille de ejemplo, se utiliza esto

Cita:
function elementoFinal($parser, $tagName) {
if ($tagName == "ITEM") {

printf("<p><b><a href='%s'>%s</a></b></p>",
trim($this->link),htmlspecialchars(trim($this->title)));
printf("<p>%s</p>",
htmlspecialchars(trim($this->description)));
$this->title = "";
$this->description = "";
$this->link = "";
$this->insideitem = false;
}
}
si cambio el htmlspecialchars por html_entity_decode me da error 500. Tengo alguna duda: ¿para que se utiliza el $this?

esta es la pagina: http://www.fran206.com/noticias como veras queda bastante feo que las noticias salgan con caracteres chungos

saludos
  #4 (permalink)  
Antiguo 21/04/2005, 10:25
 
Fecha de Ingreso: agosto-2002
Ubicación: Colón - Entre Rios - Argentina
Mensajes: 647
Antigüedad: 21 años, 8 meses
Puntos: 8
Ese error 500 llama la atencion, en una de esas puede deberse a que la funcion html_entity_decode() esta disponible desde PHP 4.3 y tengas una version mas vieja. Pero supongo que en ese caso daria un error (de php no del servidor como es el 500) de funcion no declarada.
Seguro que haces solo ese cambio?

Quizas sea porque en el primer rss los caraceteres especiales no estan traducidos a entidades html, y es el segundo si. Y si al segunlo le aplicas nuevamente htmlspecialchars() se te va a complicar la lectura....

Proba esto:
Código PHP:
printf("<p><b><a href='%s'>%s</a></b></p>",
trim($this->link),htmlentities(html_entity_decode(trim($this->title))));
printf("<p>%s</p>",
htmlentities(html_entity_decode(trim($this->description)))); 
aplicas htmlentities() despues de "decodificar" la cadena.

Pero si es tema de version... no se como solucioonarlo
  #5 (permalink)  
Antiguo 21/04/2005, 10:38
 
Fecha de Ingreso: junio-2004
Mensajes: 51
Antigüedad: 19 años, 10 meses
Puntos: 0
BIIIIINNNNGOOOO!!

jeje, muchas gracias, habia probado a poner la funcion de decodificar en muchos sitios, menos ahi jejej, ahora ya funciona.

lo de la version no era, por que ya la habia probado con un script sencillo y funcionaba en el mismo dominio. la version de php es 4.3.1, por los pelos jeje

saludos
  #6 (permalink)  
Antiguo 21/04/2005, 10:39
 
Fecha de Ingreso: agosto-2002
Ubicación: Colón - Entre Rios - Argentina
Mensajes: 647
Antigüedad: 21 años, 8 meses
Puntos: 8
Cita:
Tengo alguna duda: ¿para que se utiliza el $this?
Si estas haciendo un lector de rss en php deberias saberlo....
Sin duda es porque ese codigo es de una clase ya implemantada para tal cosa y $this se utiliza para llamar a metodos (o funciones) y atributos de es misma clase. Seguramente en las FAQ del subforo de Programacion orientada a objetos vas a encotrar links muy interesantes sobre este tema.

Jaja.. y buscandote algo de tu problema inicicial encontre esto en los comentarios de los ususarios
Cita:
Passing NULL or FALSE as a string will generate a '500 Internal Server Error' (or break the script when inside a function).

So always test your string first before passing it to html_entity_decode().
entonces a html_entity_decode() lo debe estar llegando una variable nula u FALSE

Saludos
  #7 (permalink)  
Antiguo 21/04/2005, 10:56
 
Fecha de Ingreso: junio-2004
Mensajes: 51
Antigüedad: 19 años, 10 meses
Puntos: 0
es bueno saberlo, lo del this, pues ahora que me lo dices me suena, de cuando estudie algo de php, pero lo tengo lejano.

el codigo lo pille de otra pagina, mis conocimientos no son suficientes como para hacerlo yo solo. la pagina es esta, por si interesa: http://www.gen7es.net/documentos/parseando_rss.php
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 06:46.