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
"; break;
case 'quote': $replacement = "$innertext
" . $param? "$param" : ''; break;
case 'url': $replacement = '$innertext"; break;
case 'img':
list($width, $height) = preg_split('`[Xx]`', $param);
$replacement = "
';
break;
case 'video':
$videourl = parse_url($innertext);
parse_str($videourl['query'], $videoquery);
if (strpos($videourl['host'], 'youtube.com') !== FALSE) $replacement = '';
if (strpos($videourl['host'], 'google.com') !== FALSE) $replacement = '';
break;
}
$string = str_replace($match, $replacement, $string);
}
return $string;
}