function bb_parse($string) { $tags = 'b|i|size|color|center|quote|url|img|video'; while (preg_match_all('`\[('.$tags.')=?(.*?)\](.+?)\[/\1\]`', $string, $matches)) foreach ($matches[0] as $key => $match) { list($tag, $param, $innertext) = array($matches[1][$key], $matches[2][$key], $matches[3][$key]); switch ($tag) { case 'b': $replacement = "$innertext"; break; case 'i': $replacement = "$innertext"; break; case 'size': $replacement = "$innertext"; break; case 'color': $replacement = "$innertext"; break; case 'center': $replacement = "
$innertext" . $param? "$param" : ''; break; case 'url': $replacement = '$innertext"; break; case 'img': list($width, $height) = preg_split('`[Xx]`', $param); $replacement = "