如何通过正则表达式移除UBB符号?
原始:[p]AK47乐队 [/p][p]20 [/p][color]演出时间:2009年6月7日晚八点半 [/p][p]演出地点:梦旅人音乐客栈 [/p][p]淘宝预售:http://item.taobao.com/auction/item_detail.jhtml?item_id=96430f865be5c244d92c721bcc6f9829&x_id=0db1 [/p]
结果:AK47乐队 20演出时间:2009年6月7日晚八点半演出地点:梦旅人音乐客栈淘宝预售:

解决方案 »

  1.   

    这是现成的PHP代码,要换成.NET的应该不难。$message就是要处理的字符串。 if(stripos($message, '[/url]') !== FALSE) {
    $message = preg_replace("/\[url(=((https?|ftp|gopher|news|telnet|rtsp|mms|callto|bctp|ed2k|thunder|synacast){1}:\/\/|www\.)([^\[\"']+?))?\](.+?)\[\/url\]/ies", "parseurl('\\1', '\\5')", $message);
    }
    if(stripos($message, '[/email]') !== FALSE) {
    $message = preg_replace("/\[email(=([a-z0-9\-_.+]+)@([a-z0-9\-_]+[.][a-z0-9\-_.]+))?\](.+?)\[\/email\]/ies", "parseemail('\\1', '\\4')", $message);
    }
    $message = str_replace(array(
    '[/color]', '[/size]', '[/font]', '[/align]', '', '',
    '', '', '', '', '[list]', '[list=1]', '[list=a]',
    '[list=A]', '[*]', '[/list]', '[indent]', '[/indent]', '[/float]'
    ), array(
    '</font>', '</font>', '</font>', '</p>', '<strong>', '</strong>', '<i>',
    '</i>', '<u>', '</u>', '<ul>', '<ul type="1">', '<ul type="a">',
    '<ul type="A">', '<li>', '</ul>', '<blockquote>', '</blockquote>', '</span>'
    ), preg_replace(array(
    "/\[color=([#\w]+?)\]/i",
    "/\[size=(\d+?)\]/i",
    "/\[size=(\d+(\.\d+)?(px|pt|in|cm|mm|pc|em|ex|%)+?)\]/i",
    "/\[font=([^\[\<]+?)\]/i",
    "/\[align=(left|center|right)\]/i",
    "/\[float=(left|right)\]/i" ), array(
    "<font color=\"\\1\">",
    "<font size=\"\\1\">",
    "<font style=\"font-size: \\1\">",
    "<font face=\"\\1 \">",
    "<p align=\"\\1\">",
    "<span style=\"float: \\1;\">"
    ), $message));
    $nest = 0;
    while(stripos($message, '[table') !== FALSE && stripos($message, '[/table]') !== FALSE){
    $message = preg_replace("/\[table(?:=(\d{1,4}%?)(?:,([\(\)%,#\w ]+))?)?\]\s*(.+?)\s*\[\/table\]/ies", "parsetable('\\1', '\\2', '\\3')", $message);
    if(++$nest > 4) break;
    } if($parsetype != 1) { // 121416  - phpbb style quote
    //一次性查找需要替换的次数,可提高效率
    $count1 = substr_count(strtolower($message),'[quote=');
    for($i=0;$i<$count1;$i++){ 
    $message = preg_replace("/\s*\
    Quote: (.+?)\
    [\n\r]*(.+?)[\n\r]*\[\/quote\]\s*/is", tpl_quote_phpbb('\\1', '\\2'), $message);
    }
    //一次性查找需要替换的次数,可提高效率
    $count2 = substr_count(strtolower($message),'
    Quote:
    ');
    for($i=0;$i<$count2;$i++){ 
    $message = preg_replace("/\s*\[quote\][\n\r]*(.+?)[\n\r]*\[\/quote\]\s*/is", tpl_quote(), $message);
    }
    if(stripos($message, '[/free]') !== FALSE) {
    $message = preg_replace("/\s*\[free\][\n\r]*(.+?)[\n\r]*\[\/free\]\s*/is", tpl_free(), $message);
    }
    }
    if(stripos($message, '[/media]') !== FALSE) {
    $message = preg_replace("/\[media=(\w{1,4}),(\d{1,4}),(\d{1,4}),(\d)\]\s*([^\[\<\r\n]+?)\s*\[\/media\]/ies", $allowmediacode ?"parsemedia('\\1', \\2, \\3, \\4, '\\5')" : "bbcodeurl('\\5', '<a href=\"%s\" target=\"_blank\">%s</a>')", $message);
    }
    if($parsetype != 1 && $allowbbcode == 2 && $GLOBALS['_DCACHE']['bbcodes']) {
    $message = preg_replace($GLOBALS['_DCACHE']['bbcodes']['searcharray'], $GLOBALS['_DCACHE']['bbcodes']['replacearray'], $message);
    }
    if($parsetype != 1 && stripos($message, '[/hide]') !== FALSE) {
    if(stripos($message, '[hide]') !== FALSE) {
    $query = $db->query("SELECT pid FROM {$tablepre}posts WHERE tid='$tid' AND ".($discuz_uid ? "authorid='$discuz_uid'" : "authorid=0 AND useip='$GLOBALS[onlineip]'")." LIMIT 1");
    if($GLOBALS['forum']['ismoderator'] || $apid = $db->result($query, 0)) {
    $message = preg_replace("/\[hide\]\s*(.+?)\s*\[\/hide\]/is", tpl_hide_reply(), $message);
    $hideattach[$apid] = 0;
    } else {
    $message = preg_replace("/\[hide\](.+?)\[\/hide\]/is", tpl_hide_reply_hidden(), $message);
    $hideattach[$pid] = 0;
    }
    }
    if(stripos($message, '[hide=') !== FALSE) {
    $message = preg_replace("/\[hide=(\d+)\]\s*(.+?)\s*\[\/hide\]/ies", "creditshide(\\1,'\\2', $pid)", $message);
    }
    }
      

  2.   


    string output = Regex.Replace(str,@"\[[/\w]+\]","");
    // AK47乐队 20 演出时间:2009年6月7日晚八点半 演出地点:梦旅人音乐客栈 淘宝预售:http://item.taobao.com/auction/item_detail.jhtml?item_id=96430f865be5c244d92c721bcc6f9829&x_id=0db1  
      

  3.   

    测试用例可用:[p]asdfsafsadfsafsaffsdfasdfsdaf[font=Tahoma]sdafsd[/font][font=KaiTi_GB2312]afsafsdafsdfsadfasdfsdafsafsfsa[/font][/p][p][font=楷体_GB2312]中国人[/font][/p]
      

  4.   


    string output = Regex.Replace(str,@"\[[^\]]+\]","");