Estoy terminando un sistema personal y me encuentro atorado en la parte de mostrar noticias, en especifico la parte cuando queremos mostrar codigos o texto de algun lenguaje de programacion utilizando las etiquetas CODE, pero por mas que lo intengo no logro imprimir bien algunas cosas...
El proceso que realizo para guardar la noticia de una forma muy resumida es:
OJO: register_globals= Off asi esta mi php.ini configuado.
Código:
<?php
switch( $buf_sec["TIPO"] ) //dependiendo el tipo de mensaje/noticia a colgar, es el modo
{
case 'noticia':
$msg= strip_tags($_POST["mensaje_noticia"]); //eliminamos etiquetas HTML
$msg= msg2caritas( $msg ); //de CODIGO a CARITAS, Ejm: :D => <img src="blabla">
$msg= msg2msgtags( $msg ); //de BBCode a HTML Tags, Ejm: [b] => <b>
//generamos array de insercion mysql
$valores= array(
"autor"=>"'". $_SESSION["log_usr"]. "'",
"titulo"=>"'". htmlentities($_POST["titulo_noticia"], ENT_QUOTES). "'",
"mensaje"=>"'". htmlentities($msg, ENT_QUOTES). "'",
"fecha"=>"'". time(). "'",
"menu"=>"'". htmlentities($buf_menu["NOMBRE"], ENT_QUOTES). "'",
"sección"=>"'". htmlentities($buf_sec["NOMBRE"], ENT_QUOTES). "'" );
unset($msg);
if( insertar_bdd( "NOTICIAS", $valores )==0 ) //insertamos a la BDD la trama
echo "Error en la Insercion de los Datos.";
else
echo "Datos Agregados con Exito.";
break;
//otros case...
}
?>
Para mostrar la noticia al publico es (de forma resumida):
Código:
<?php
//en una funcion anterior se reviso la validez y seguridad de la variable
//que actualmente esta pasandose como argumento con el nombre de 'id_tmp'
$cons= consultar_con( "NOTICIAS", "ID='". $id_tmp. "'" );
$tmp= mysql_fetch_array($cons);
$fecha= date( "j", $tmp["FECHA"] ). " de ";
$fecha .= mes_esp(date( "m", $tmp["FECHA"] )). " del "; //el mes en espanol
$fecha .= date( "Y", $tmp["FECHA"] ). " a las ";
$fecha .= date( "g:i a", $tmp["FECHA"] );
$com_con= consultar_con( "SECCIONES", "NOMBRE='". $tmp["sección"]. "':RELACION='". $tmp["MENU"]. "'" );
$comm= mysql_fetch_array($com_con);
echo "<th colspan=\"2\"><a href=\"index.php?hoja=". $tmp["ID"]. "\" alt=\"". $tmp["TITULO"]. "\" title=\"". $tmp["TITULO"]. "\">". $tmp["TITULO"]. "</a></th><tr>";
echo "<td><div id=\"datos_publicacion\">Publicado por ";
echo "<a href=\"mailto:". consultar_datos_usuario( $tmp["AUTOR"], "email" ). "\" alt=\"". consultar_datos_usuario( $tmp["AUTOR"], "email" ). "\" title=\"". consultar_datos_usuario( $tmp["AUTOR"], "email" ). "\">";
echo "<b>". $tmp["AUTOR"]. "</b></a> el ". $fecha. "</div></td><tr>";
echo "<td>". html_entity_decode($tmp["MENSAJE"], ENT_QUOTES). "</td>";
ver_comentarios_thtd( $comm["COMENTARIOS"], $tmp["ID"], $id_tmp );
echo "<tr>";
unset($cons);
unset($id_tmp);
?>
La funcion de msg2msgtags:
Código:
<?php
function msg2msgtags( $mensaje )
{
/*
strchr( lugar, palabraclave ) busca la "palabraclave" en "lugar"
str_replace( palabraclave, sustituto, lugar ) busca en "lugar" la "palabraclave" y la sustituye por "sustituto"
*/
if( strchr( $mensaje, "[b]" ) && strchr( $mensaje, "[/b]" ) )
{
$mensaje= str_replace( "[b]", "<b>", $mensaje );
$mensaje= str_replace( "[/b]", "</b>", $mensaje );
}
if( strchr( $mensaje, "[i]" ) && strchr( $mensaje, "[/i]" ) )
{
$mensaje= str_replace( "[i]", "<i>", $mensaje );
$mensaje= str_replace( "[/i]", "</i>", $mensaje );
}
if( strchr( $mensaje, "[u]" ) && strchr( $mensaje, "[/u]" ) )
{
$mensaje= str_replace( "[u]", "<u>", $mensaje );
$mensaje= str_replace( "[/u]", "</u>", $mensaje );
}
if( strchr( $mensaje, "[center]" ) && strchr( $mensaje, "[/center]" ) )
{
$mensaje= str_replace( "[center]", "<center>", $mensaje );
$mensaje= str_replace( "[/center]", "</center>", $mensaje );
}
if( strchr( $mensaje, "[img]" ) && strchr( $mensaje, "[/img]" ) )
{
$mensaje= str_replace( "[img]", "<img class=\"img_post\" src=\"", $mensaje );
$mensaje= str_replace( "[/img]", "\">", $mensaje );
}
if( strchr( $mensaje, "[code]" ) || strchr( $mensaje, "
{
$mensaje= str_replace( "
Código:
", "<div id=\"etiqueta_code\">", $mensaje );
$mensaje= str_replace( "
}
if( strchr( $mensaje, "\n" ) )
{
$mensaje= str_replace( "\n", "<br>", $mensaje );
}
if( strchr( $mensaje, "<script>" ) )
{
$mensaje= str_replace( "<script>", htmlentities( "<script>", ENT_QUOTES ), $mensaje );
}
if( strchr( $mensaje, "</script>" ) )
{
$mensaje= str_replace( "</script>", htmlentities( "</script>", ENT_QUOTES ), $mensaje );
}
/*if( strchr( $mensaje, "" ) && strchr( $mensaje, "" ) )
{
$mensaje= str_replace();
$mensaje= str_replace();
}*/
return $mensaje;
}
?>[/code]
El estilo de la etiqueta #etiqueta_code en mi css es:
Código:
#etiqueta_code
{
background-color:yellow;
width:390px;
padding:3px 5px 3px 5px;margin-left:5px;
}