elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Crear la etiqueta CODE en mi propio codigo !!
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Crear la etiqueta CODE en mi propio codigo !!  (Leído 2,961 veces)
Diabliyo


Desconectado Desconectado

Mensajes: 1.441


shell# _


Ver Perfil WWW
Crear la etiqueta CODE en mi propio codigo !!
« en: 2 Junio 2008, 21:22 pm »

Hola:

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( "
", "</div>", $mensaje );
      }
   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;
}


En línea

Diabliyo


Desconectado Desconectado

Mensajes: 1.441


shell# _


Ver Perfil WWW
Re: Crear la etiqueta CODE en mi propio codigo !!
« Respuesta #1 en: 2 Junio 2008, 21:27 pm »

Al final de todo, al publicar el mensaje se come esto:

- Si el texto/codigo tiene TABULARES, los elimina.
- Si el texto/codigo tiene ESPACIOS extra, los elimina.
- Si el codigo es programa en C, elimina las cabeceras que esten declaradas asi: < cabecera >
- Solo se puede imprimir una cabecera de codigo C, mediante la inclucion asi: include "cabecera"

Alguna idea ?


En línea

SirLanceCC


Desconectado Desconectado

Mensajes: 1.093


Ver Perfil WWW
Re: Crear la etiqueta CODE en mi propio codigo !!
« Respuesta #2 en: 2 Junio 2008, 21:51 pm »

debes reemplazar los espacios con &nbsp;
reemplazar los < y > por &lt; y &gt; respectivamente o usar alguna función como html_entities()
...
el tabulador podrías reemplazarlo por 4 espacios &nbsp;
En línea

Diabliyo


Desconectado Desconectado

Mensajes: 1.441


shell# _


Ver Perfil WWW
Re: Crear la etiqueta CODE en mi propio codigo !!
« Respuesta #3 en: 3 Junio 2008, 01:37 am »

debes reemplazar los espacios con &nbsp;
reemplazar los < y > por &lt; y &gt; respectivamente o usar alguna función como html_entities()
...
el tabulador podrías reemplazarlo por 4 espacios &nbsp;

Lo del remplazo de los espacios por &nbsp y los < > por &lt; &gt seria en la funcion msg2mstags() que utilizo ??... o en que parte del codigo serua conveniente invocar eso ??
En línea

Hans el Topo


Desconectado Desconectado

Mensajes: 1.754


"Estoy cansado de no hacer nada"


Ver Perfil WWW
Re: Crear la etiqueta CODE en mi propio codigo !!
« Respuesta #4 en: 3 Junio 2008, 10:42 am »

cuando se tiene dudas sobre funciones y demás se va a la fuente que es www.php.net
para convertir carácteres html especiales http://es2.php.net/manual/es/function.htmlspecialchars.php

para salvar las comillas con el magic_quote off
http://es2.php.net/manual/es/function.addslashes.php


si quieres agregar la etiqueta code existe una librería bastante útil que coloreará y dará formato por ti

syntax highlight

te paso un tutorial que hice de como implementarla en blogger (la instalación es genérica a cualquier sitio) en donde explica como personalizar la instalación/dependencias
Tutorial


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
¿Cómo crear una etiqueta de un color???
Java
Hartigan 1 1,470 Último mensaje 26 Agosto 2012, 23:39 pm
por sapito169
Sugerencia sobre etiqueta code
Sugerencias y dudas sobre el Foro
bdoX 2 3,177 Último mensaje 15 Junio 2014, 22:57 pm
por bdoX
Los ciberdelincuentes tienen su propio código de honor
Noticias
wolfbcn 0 1,230 Último mensaje 26 Enero 2017, 21:39 pm
por wolfbcn
[Resuelto] Codigo de Apertura de PHP en Code Igniter
PHP
danny920825 2 2,830 Último mensaje 28 Junio 2017, 22:47 pm
por danny920825
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines