Figured it out. Found the solution in an article at PHP.net
$s = str_replace("]\n", "]", $message);
$match = array('#\[code\](.*?)\[\/code\]#se');
$replace = array("nl2br(htmlspecialchars('$1',true))");
$message = preg_replace($match, $replace, $s);
$s = str_replace("]\n", "]", $message);
$match = array('#\[php\](.*?)\[\/php\]#se');
$replace = array("highlight_string(stripslashes('$1'),true)");
$message = preg_replace($match, $replace, $s);
$message = str_replace("<br />","",$message);