Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/08/2004, 09:37
Avatar de Reynier
Reynier
 
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 21 años, 5 meses
Puntos: 1
Ayuda con BBCode

Hola a todos:
Hace un tiempo atrás comentaba por aquí que estaba realizando un Foro de Discusión, para probarme y ver si de verás aprendía PHP. Pues bien creo que la idea ya va a un 45% de ejecución. La cosa es que necesito ayuda de alguien que haya hecho algo antes con BBCode pues en realidad si entran al Foro y ven el mensaje que hay puesto en la sección "oticias Generales y Administración" se darán cuenta que hay BBCode sin formatear y que necesito dar formato, porque sino el Foro no sería atractivo. La dirección del mismo es http://reynierpm.variosweb.com. Este es el código que he realizado yo mismo (no soy experto ni mucho menos) y no se si sea el más eficiente o el correcto:
Código PHP:
function BBCodeParser($text){
  
$bbcode str_replace("[b]""<strong>",$text);
  
$bbcode str_replace("[/b]""</strong>",$bbcode);
  
$bbcode str_replace("[u]""<u>",$bbcode);
  
$bbcode str_replace("[/u]""</u>",$bbcode);
  
$bbcode str_replace("[i]""<i>",$bbcode);
  
$bbcode str_replace("[/i]""</i>",$bbcode);
  
$bbcode str_replace("[align=center]""<div align='center'>",$bbcode);
  
$bbcode str_replace("[/center]""</div>",$bbcode);
  
$bbcode str_replace("[align=left]""<div align='left'>",$bbcode);
  
$bbcode str_replace("[/left]""</div>",$bbcode);
  
$bbcode str_replace("[align=right]""<div align='right'>",$bbcode);
  
$bbcode str_replace("[/right]""</div>",$bbcode);
  
$bbcode str_replace("[align=justify]""<div align='justify'>",$bbcode);
  
$bbcode str_replace("[/justify]""</div>",$bbcode);
  
$bbcode str_replace("[cita]""\n<fieldset><legend class='citacolor'>Cita:</legend><div class='quote'>",$bbcode);
  
$bbcode str_replace("[/cita]""</div></fieldset>",$bbcode);
  
$bbcode str_replace("[codigo]""\n<fieldset><legend class='codecolor'>Código:</legend><div class='code'>",$bbcode);
  
$bbcode str_replace("[/codigo]""</div></fieldset>",$bbcode);
  return 
$bbcode;
 }

 function 
ParserPHP($text){
  
preg_match_all("/(\[)(php)(])(.*)(\[\/php\])/iU"$text$l);
  for(
$i=0$icount($l[0]); $i++){
   
$bbcode str_replace($l[0][$i],PHPFormat($l[4][$i]),$text);
  }
  return 
$bbcode;
 }

 function 
PHPFormat($php) {
  
$php str_replace("<br>","\n",$php);
  
ob_start();
  
highlight_string($php);
  
$cfinal ob_get_contents();
  
ob_end_clean();
  
$keycol ini_get("highlight.keyword");
  
$manual "http://www.php.net/manual-lookup.php?lang=es&amp;pattern=";
  
$cfinal preg_replace('{([\w_]+)(\s*</font>)'.
                         
'(\s*<font\s+color="'.$keycol.'">\s*\()}m',
                         
'<a href="'.$manual.'$1" title="Ayuda en [url]www.php.net[/url] sobre $1" target="_blank">$1</a>$2$3',
                          
$cfinal);
  return 
"\n<fieldset><legend class='phpcolor'>Código PHP:</legend><div class='php'>".$cfinal."</div></fieldset>";
 }

 function 
SmilieParser($text){
  
$bbcode str_replace(":smilie01:","<img src='images/smilies/smile033.gif' alt='Smile 01' align='absmiddle' border='0' class='cursor'>"$text);
  
$bbcode str_replace(":smilie02:","<img src='images/smilies/smile032.gif' alt='Smile 02' align='absmiddle' border='0' class='cursor'>"$bbcode);
  
// asi para las demas smilies
  
return $bbcode;
 } 
ahora el formato de BBCode lo pueden probar ustedes mismos en el Foro para que vean como funciona. La llamada a estas funciones es la siguiente:
Código PHP:
$unformmated SmilieParser(BBCodeParser(($fetch['text']))); 
la de PHP la he probado pero solo me funciona con lineas horizontales, o sea, si el texto en la BD es así:
Cita:
<?php function PEPE($var1,$var2){ echo $var1; echo $var2; } ?>
me lo formatea, pero si es así:
Cita:
<?php
function PEPE($var1,$var2){
echo $var1;
echo $var2;
}
?>
no hace nada incluso no me escribe entonces el mensaje. Ayuda !!! que esto me vuelve loco y no doy con lo errores.

Salu2 y gracias ante todo
__________________
Ing. Reynier Pérez Mira