Bueno... lo he solucionado todo con esta función que encontré, aunque la he cambiado un poco:
Código PHP:
<?php
function converthtml($texto){
$a = array(
"#\[i\](.*)\[/i\]#",
"#\[b\](.*)\[/b\]#",
"#\[u\](.*)\[/u\]#",
"#\[img\](.*)\[/img\]#",
"#\[url=(.*)\](.*)\[/url\]#"
);
$b = array(
"<i>$1</i>",
"<b>$1</b>",
"<u>$1</u>",
"<img src=\"$1\" />",
"<a href=\"$2\" target=\"_blank\">$1</a>"
);
$textonobr = preg_replace($a, $b, $texto);
$textohtml = nl2br($textonobr);
echo $textonobr;
}
$texto="[url=Esto]http://www.google.com[/url] es una url, y [u]yo[/u] ya he [i]aprendido[/i] otro poquito de [b]php[/b]";
converthtml($texto);
?>