Ya he revisado todo el código y ahora me funciona en parte. Les explico para que entiendan. Este es el código después que me lo he estudiado y lo he arreglado:
Código PHP:
function BBCode($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("[center]", "<div align='center'>",$bbcode);
$bbcode = str_replace("[/center]", "</div>",$bbcode);
$bbcode = str_replace("[left]", "<div align='left'>",$bbcode);
$bbcode = str_replace("[/left]", "</div>",$bbcode);
$bbcode = str_replace("[right]", "<div align='right'>",$bbcode);
$bbcode = str_replace("[/right]", "</div>",$bbcode);
$bbcode = str_replace("[justify]", "<div align='justify'>",$bbcode);
$bbcode = str_replace("[/justify]", "</div>",$bbcode);
$bbcode = str_replace("[cita]", "\n<div class='css_title'>Cita: <div class='css'>",$bbcode);
$bbcode = str_replace("[/cita]", "</div></div>",$bbcode);
$bbcode = str_replace("[url]","<a href='' target='_blank'>'", $bbcode);
$bbcode = str_replace("[/url]","</a>'", $bbcode);
$bbcode = eregi_replace('([[:space:]()[{}])([url]www.[-a-zA-Z0-9@:%_+.~#?&//=]+[/url])', '\1<a href="http://\2" target="_blank">\2</a>', $bbcode);
$bbcode = eregi_replace('([_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,4})','<a href=\"mailto:\1\">\1</a>', $bbcode);
preg_match_all ("/(\[)(php)(])(.*)(\[\/php\])/iU", $text, $l);
for($i=0; $i< count($l[0]); $i++){
$bbcode = str_replace($l[0][$i],PHPFormat($l[4][$i]),$text);
}
return $bbcode;
}
# Función para código PHP
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&pattern=";
$cfinal=preg_replace('{([\w_]+)(\s*</font>)'.
'(\s*<font\s+color="'.$keycol.'">\s*\()}m',
'<a href="'.$manual.'$1" title="Ayuda en PHP.net sobre $1" target="_blank">$1</a>$2$3',
$cfinal);
return "<div class='ccs_title'>Código PHP:<div class='css'>".$cfinal."</div></div>";
}
ahora bien. Estos son los dos textos que estoy tratando de mostrar:
Cita: [ i ]Te[ /i ] podrías explicar un poco mejor pues no entiendo muy bien a que te refieres con esto:
esto implica que la tabla tendria entoces una fila menos
Salu2
[ url ]http://www.forosdelweb.com[ /url ]
[ PHP ]<? function ReturnDate(){ $date = date("Y"); return $date; } ?> [/PHP ]
y este el otro
Cita: Hola:
[ b ]Primero[ /b ] que todo [ b ]gracias[ /b ] por lo de la actualizacion me pincho de lo mejor.Ahora suponiendo que lo que esta en ese campo lo quiero borrar (esto implica que la tabla tendria entoces una fila menos) por la misma via de la actualizacion lo que en este caso palabra_a_cambiar seria palabra_a_borrar que conyeva a lo anterior [ u ]dicho[ /u ].
[ url ]http://www.php.net[ /url ]
Gracias de ante mano
[ PHP ]
<?
function ReturnData(){
return $this->Data();
}
?>
[ /PHP ]
a los dos le hago la llamada de esta forma:
Código PHP:
$cadena = nl2br($fetch['text']);
$formattext = BBCode($cadena);
con el primero solo da formato al código PHP siempre y cuando este no tenga saltos de línea, por lo que no me coje las italicas o subrayadas o otros. Con el segundo no me formatea la URL ni el código PHP porque el mismo tiene saltos de línea. Que hago mal?
Salu2