Ok, ya lo tengo.
Código PHP:
function print_php_code($str, $type='text') {
switch ($type) {
case "text":
$str = highlight_string($str, true);
break;
case "file":
$str = highlight_file($str, true);
break;
}
$str = explode("<br />", $str);
$salida = "<div style='position:relative; border:1px solid #000000'>";
$salida .= "Codigo PHP<ol>\n";
foreach ($str as $line => $syntax) {
$salida .= "<li><code>" . $syntax . "</code></li>";
}
$salida.= "</ol>\n";
$salida.= "</div>";
return $salida;
}
$subs = array(
'/\<p\>(.+)\<\/p\>/Ui' => '<p>$1</p>',
'/\[PHP\](.+)\[\/PHP\]/e' => 'print_php_code (html_entity_decode ("\\1"))',
'/_(.+)_/Ui' => '<em>$1</em>'
);
$bb_text = preg_replace(array_keys($subs), array_values($subs), $pregunta->row['descripcion']);
echo $bb_text;