Misschien niet de oplossing die je wenst maar een snelle copy paste uit een eigen stukje source code:
$patterns = array(
"#\[9\](.*?)\[/9\]#si",
"#\[8\](.*?)\[/8\]#si",
"#\[7\](.*?)\[/7\]#si",
"#\[6\](.*?)\[/6\]#si",
"#\[2=(.*?)\](.*?)\[/2\]#si",
"#\[1=(.*?)\](.*?)\[/1\]#si",
"#\[IMG\](.*?)\[/IMG\]#si",
"#\[vid\](.*?)\[/vid\]#si",
"#\[right\](.*?)\[/right\]#si"
);
$replaces = array(
"<b>\\1</b>",
"<u>\\1</u>",
"<i>\\1</i>",
"<s>\\1</s>",
"<font color=\"#\\1\">\\2</font>",
"<a href=\"\\1\" TARGET=\"\\_blank\"><img src='".$_SERVER['REQUEST_SCHEME']."://".$_SERVER['HTTP_HOST']."/foto/web/public/images/icons/monitor_go.png' style='margin-bottom:-4px;'/> <font color=#63C5FF><b>Link</b></font> \\2</a>",
"<a href=\"\\1\" TARGET=\"\\_blank\"><img src='".$_SERVER['REQUEST_SCHEME']."://".$_SERVER['HTTP_HOST']."/foto/web/public/images/icons/tag_blue.png'/> <font color=#767676><b>Afbeelding</b></font></a>",
"<a href=\"\\1\" TARGET=\"\\_blank\"><img src='".$_SERVER['REQUEST_SCHEME']."://".$_SERVER['HTTP_HOST']."/foto/web/public/images/icons/youtube_play.png' style='margin-left:-7px;display:inline-block;'/> <font color=#767676><b>Filmpje</b></font></a>",
"<div style=\"text-align: right;\" align=\"right\">\\1</div>"
);
$in = preg_replace($patterns,$replaces, $in);
Toon Meer
Op eerste zicht ziet alles er goed uit voor overschakeling naar preg_replace() maar ontbreken misschien nog de quotes in 't begin: '#' en op 't eind '#si'