Untitled
By: a guest | Oct 6th, 2008 | Syntax:
None | Size: 1.12 KB | Hits: 32 | Expires: Never
<?php
function parse_bb($text)
{
$new_t = nl2br($text);
$old_t = '';
while ( $old_t != $new_t )
{
$old_t = $new_t;
$new_t = preg_replace_callback('#\[(.+)=?(.*?)?\](.*?)\[\/\1\]#', 'parse_bb_callback', $new_t);
}
return $new_t;
}
function parse_bb_callback($hit)
{
$tag = $hit[1];
$attr = $hit[2];
$encl = $hit[3];
switch ( $tag )
{
case 'b':
return "<b>$encl</b>";
break;
case 'i':
return "<i>$encl</i>";
break;
case 'u':
return "<u>$encl</u>";
break;
case 'h3':
return "<h3>$encl</h3>";
break;
case 'img':
return "<img src=\"$attr\" alt=\"$encl\" />";
break;
case 'lnk':
if ( $encl == '' )
{
return "<a href=\"$attr\" target=\"_blank\">$attr</a>";
}
return "<a href=\"$attr\">$encl</a>";
break;
case 'mailto':
$mail = preg_replace( "/(.)/se", " '&#' . ord( '\\1' ) . ';' ", $attr );
return "<a href=\"mailto:$mail\">$mail</a>";
break;
case 'html':
$encl = html_entity_decode($encl);
$encl = str_replace('&', '&', $encl);
return $encl;
break;
default:
return $hit[0];
}
}
?>