Ik doe het zo:
Code:
function BB_to_HTML( $content )
{
$content = preg_replace('/\:[0-9a-z\:]+\]/si', ']', $content);
$content = str_replace( "[b]", "<strong>", $content);
$content = str_replace( "[/b]", "</strong>", $content);
$content = str_replace( "[i]", "<em>", $content);
$content = str_replace( "[/i]", "</em>", $content);
$content = str_replace( "[u]", "<span class='u'>", $content);
$content = str_replace( "[/u]", "</span>", $content);
$content = str_replace( "[quote]", "<div class='quote'><p class='quotetext'>", $content);
$content = preg_replace( '/\[quote:([0-9a-z]{10})="([0-9a-zA-Zé]+)"\]/', "<div class='quote'><div class='quotehead'>\$2 zei:</div><p class='quotetext'>", $content);
$content = preg_replace( '/\[quote="([0-9a-zA-Zé ]+)"\]/', "<div class='quote'><div class='quotehead'>\$1 zei:</div><p class='quotetext'>", $content);
$content = preg_replace( '/\[\/quote:([0-9a-z]{10})\][ \t\r\n]*/', "</p></div><br />", $content);
$content = preg_replace( '/\[\/quote\][ \t\r\n]*/', "</p></div><br />", $content);
$content = str_replace( "[code]", "<strong>Code</strong><em>", $content);
$content = str_replace( "[/code]", "</em>", $content);
$content = str_replace( "[list]", "<div class='list'>", $content);
$content = str_replace( "[/list]", "</div>", $content);
$content = preg_replace( '/\[list\](.*)\[\/list\]/si', "<div class=\"list\">$1</div>", $content);
$content = preg_replace( '/\[list=(.*)\](.*)\[\/list\]/si', "<div class=\"list\">$1</div>", $content);
$content = str_replace( "[img]", "<img class='foto' src=\"", $content);
$content = str_replace( "[/img]", "\" alt=\"\" />", $content);
$content = preg_replace( '/\[url\](.*)\[\/url\]/Usi', '<a href="$1">$1</a>', $content);
$content = preg_replace( '/\[url=(.*)\](.*)\[\/url\]/Usi', '<a href="$1">$2</a>', $content);
$content = str_replace( "\n", "<br />", $content);
return $content;
}
Waarschijnlijk niet volledig correct, maar ik heb er nog geen problemen meer gehad. Om de smiley's ook om te zetten heb je volgende code nodig:
Code:
function smilies_pass( $message )
{
static $orig, $repl;
if( !isset( $orig ) )
{
global $db, $phpbb_root_path;
$orig = $repl = array();
$sql = 'SELECT * FROM `phpbb_smilies`';
if( !$result = $db->sql_query($sql) )
{
message_die( GENERAL_ERROR, "Couldn't obtain smilies data", "", __LINE__, __FILE__, $sql );
}
$smilies = $db->sql_fetchrowset($result);
if( count( $smilies ) )
{
usort( $smilies, 'smiley_sort' );
}
for( $i = 0; $i < count( $smilies ); $i++ )
{
$orig[] = "/(?<=.\W|\W.|^\W)" . phpbb_preg_quote($smilies[$i]['code'], "/") . "(?=.\W|\W.|\W$)/";
$repl[] = '<img src="' . $phpbb_root_path . 'images/smiles/' . $smilies[$i]['smile_url'] . '" alt="' . $smilies[$i]['emoticon'] . '" />';
}
}
if( count( $orig ) )
{
$message = preg_replace( $orig, $repl, ' ' . $message . ' ' );
$message = substr( $message, 1, -1 );
}
return $message;
}
function smiley_sort( $a, $b )
{
if ( strlen( $a['code'] ) == strlen( $b['code'] ) )
{
return 0;
}
return ( strlen( $a['code'] ) > strlen( $b['code'] ) ) ? -1 : 1;
}