Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: Diabliyo en 26 Agosto 2010, 17:26 pm



Título: Interpretacion de Saltos de Linea en XML para Feed ?
Publicado por: Diabliyo en 26 Agosto 2010, 17:26 pm
Buenas.

Tengo un blog el cual lo gestiono con mi propio CMS, hace ya muchos meses le implemente Feed (rss.php) el cual se genera en PHP.

Actualmente no tengo problemas para mostrar las noticias, titulos y acentos dentro del Feed (rss.php), el único inconveniente es que no se como interpretar los saltos de linea de linea y caracteres HTML (tags).

Si tengo una noticia que dice en el blog:
Código:
01010101
02020202
0303030303

Cuando sincronizo el Feed del blog, la noticia sale asi:
Código:
01010101020202020303030303

Vaya, no se respetan los saltos de linea :(

Como interpreto mi codigo ?
Bueno, basicamente la noticia se cuelga mediante un formulario y para disponer de tags HTML se hace uso de BBCode, el cual, cuando alguien accede al sitio se interpreta con una funcion.
Respecto al Feed, simplemente interpreto de la misma forma, solo que al final todo los codifico a UTF-8, y elimino los tags html, ya que no veo que sean interpretados (strip_tags()).

Les dejo la funcion que uso para interpretar noticias para el Feed/RSS:
Código
  1. <?php
  2. function desproteger_cadena_xml( $cadena )
  3. {
  4. $out=$cadena;
  5. $out= html_entity_decode( $out, ENT_QUOTES );
  6.  
  7. # eliminamos caracteres < y >, ya que el BBCode es el principal
  8. if( strchr( $out, "<" ) )
  9. $out= str_replace( "<", htmlentities("<", ENT_QUOTES), $out );
  10. if( strchr( $out, ">" ) )
  11. $out= str_replace( ">", htmlentities(">", ENT_QUOTES), $out );
  12.  
  13. # sustituimos Saltos de Linea por salto en html
  14. if( strchr( $out, "\n" ) )
  15. $out= str_replace( "\n", "<br>", $out );
  16. if( strchr( $out, "\t" ) )
  17. $out= str_replace( "\t", "&nbsp;&nbsp;&nbsp;", $out );
  18.  
  19. //$out= utf8_encode( str_replace("|","/",$out) );
  20. $out= msg2msgtags($out); # interprete BBCode (de BBCode a HTML Tags)
  21. $out= msg2caritas($out); # interprete de Caritas (de BBCode Caritas a <img src="carita.jpg">)
  22. $out= msg2caritas_extra($out); # lo mismo, pero son caritas extras personalizadas del tema web
  23.  
  24. $out= utf8_encode( $out ); # estandar UTF-8
  25. return $out; # retornamos cadena lista para hacerle "echo"
  26. }
  27. ?>

Saludos !