PHP kôd:
define('ZAMENA_ZA_NL', '~\n~'); // ovde naravno moze da se stavi i npr. {{n}} ili vec nesto sto tebi odgovara
// sakrijes \n unutar <PRE>...</PRE> dela
$out = preg_replace_callback('|<pre>.+?</pre>|',
create_function( '$matches', 'return strtr( $matches[0], array("\n"=>ZAMENA_ZA_NL));',
$input);
//zamenis \n sa <br>
$out = nl2br($out);
// vratis \n
$out = strtr( array(ZAMENA_ZA_NL=>"\n");
ovo kucam iz glave, pa mozda ima nekih greskica, ali to ti je ideja kako da resis... a isto tako mozes i za [code] blok i ostalo..