Ciao a tutti!

Stò realizzando un motore per l'inserimento delle news in un sito e ho pensato di inserire il supporto per tag semplici come quelli di questo forum:
codice:
[*img]immagine[/*img] oppure [*url=]link[/*url] etc...
Per tradurli in codice HTML ho implementato un semplice parser:
codice:
function parser($string) {
                $string = str_replace("\n", "
", $string);
		$string = str_replace("[URL=" , "[b]<a href=" , $string);
		$string = str_replace("[/*URL]", "</a>[/b]", $string);
		$string = str_replace("[B*]", "[b]", $string);
		$string = str_replace("[/B*]", "[/b]", $string);
		$string = str_replace("[U*]", "<u>", $string);
		$string = str_replace("[/U*]", "</u>", $string);
		$string = str_replace("[I*]", "[i]", $string);
		$string = str_replace("[/I*]", "[/i]", $string);
		$string = str_replace("[*url=" , "<a href=" , $string);
		$string = str_replace("[*/url]", "</a>", $string);
		$string = str_replace("[b*]", "[b]", $string);
		$string = str_replace("[/b*]", "[/b]", $string);
		$string = str_replace("[u*]", "<u>", $string);
		$string = str_replace("[/u*]", "</u>", $string);
		$string = str_replace("[i*]", "[i]", $string);
		$string = str_replace("[/i*]", "[/i]", $string);
		$string = str_replace("[IMG*]", "<img src=\"", $string);
		$string = str_replace("[/IMG*]", "\" border=\"0\">", $string);
		$string = str_replace("[img*]", "<img src=\"", $string);
		$string = str_replace("[/img*]", "\" border=\"0\">", $string);
		$string = str_replace("]", ">", $string);
  		return $string;
}
Ora mi chiedevo se esiste un modo più elegante o più affidabile per eseguire le stesse operazioni, perchè così come l'ho implementato io non mi soddisfa appieno.
Mi sapreste eventualmente indicare una guida o fornire degli esempi?
O anche solo indicarmi delle funzioni per implementarlo.
Grazie a tutti!

Alder

N.B.
Gli asterischi servono solo ad evitare che il parser di questo forum interpreti i tag