'
',
// '#\[(h[4-6])\](.+?)\[/\1\]#is' => '<\1>\2\1>',
'#\[b\](.+?)\[/b\]#is' => '\1',
'#\[i\](.+?)\[/i\]#is' => '\1',
'#\[u\](.+?)\[/u\]#is' => '\1',
'#\[s\](.+?)\[/s\]#is' => '\1',
'#\[p\](.+?)\[/p\]#is' => '
\1
', '#\[pre\](.+?)\[/pre\]#is' => '\1', '#\[quote\](.+?)\[/quote\]#is' => '
\1', // '#\[small\](.+?)\[/small\]#is' => '\1', // '#\[big\](.+?)\[/big\]#is' => '\1', ); $s = preg_replace_callback('#\[code([^\]]*?)\](.*?)\[/code\]#is', function ($m) { return '[code' . $m[1] . ']' . bbcode_protect($m[2]) . '[/code]'; }, $s); $s = htmlspecialchars($s, ENT_COMPAT, 'UTF-8'); $s = preg_replace(array_keys($bbcode), array_values($bbcode), $s); $bbcode_cb = array( '#\[url\=(.+?)\](.*?)\[/url\]#is' => function($m) { return filter_var($m[1], FILTER_VALIDATE_URL) ? '' . $m[2] . '' : $m[0]; }, '#\[url](.*?)\[/url\]#is' => function($m) { return filter_var($m[1], FILTER_VALIDATE_URL) ? '' . $m[1] . '' : $m[0]; }, '#\[(e?mail)\=(.+?)\](.*?)\[/\1\]#is' => function($m) { return filter_var($m[2], FILTER_VALIDATE_EMAIL) ? '' . $m[3] . '' : $m[0]; }, '#\[(e?mail)\](.*?)\[/\1\]#is' => function($m) { return filter_var($m[2], FILTER_VALIDATE_EMAIL) ? '' . $m[2] . '' : $m[0]; }, '#\[code\=(.+?)\](.+?)\[/code\]#is' => function($m) { return bbcode_highlite($m[2], $m[1]); }, '#\[code\](.+?)\[/code\]#is' => function($m) { return bbcode_highlite($m[1]); }, ); foreach ($bbcode_cb as $regexp => $f) { $s = preg_replace_callback($regexp, $f, $s); } return $s; } function bbcode_protect($s) { return base64_encode(preg_replace('#\\\"#', '"', $s)); } function bbcode_highlite($s, $language=false) { $s = base64_decode($s); if (!$language) { return '
' . htmlspecialchars($s, ENT_COMPAT, 'UTF-8') . '
';
}
$geshi = new GeSHi($s, $language);
$geshi->enable_classes(true);
$geshi->set_header_type(GESHI_HEADER_DIV);
$geshi->enable_keyword_links(false);
$geshi->set_tab_width(4);
$output = $geshi->parse_code();
if ($geshi->error()) {
return false;
}
head('stylesheet', 'geshi/' . $language, 'screen');
return '