Grazie dreadnaut, per ora ho deciso di fare in questo modo:
Codice PHP:
function php($id){ $a = mysql_fetch_array(mysql_query("SELECT * FROM codici WHERE id = '".$id."'")); return "<div class=\"codice\">".nl2br($a['codice'])."</div>"
$body = preg_replace("#\{([0-9]+)\}#e",'php(\\1)',htmlspecialchars_decode($a['post']));
echo $body;
Facendo così il codice si vede bene e formattato, però io vorrei che il codice fosse "colorato" pertanto dovrei utilizzare highlight_string():
Codice PHP:
function php($id){ $a = mysql_fetch_array(mysql_query("SELECT * FROM codici WHERE id = '".$id."'")); return "<div class=\"codice\">".highlight_string($a['codice'])."</div>"
$body = preg_replace("#\{([0-9]+)\}#e",'php(\\1)',htmlspecialchars_decode($a['post']));
echo $body;
Solo che facendo così:
1. Il codice non si "colora".
2. Il codice non si formatta.
3. Non mi viene restituito il div con al suo interno il codice.
Come mai? Cosa sbaglio ora?