]*?>(.*?)<\/script>/i", '', $message); } if($allowat) { if(strpos($msglower, '[/uid]') !== FALSE) { //$message = preg_replace("/\[uid=(\d+)\](.+?)\[\/uid\]/ies", "parseat('\\1', '\\2' ,'uid')", $message); $message = preg_replace_callback("/\[uid=(\d+)\](.+?)\[\/uid\]/is", function($matches){ return parseat($matches[1], $matches[2],'uid'); }, $message); } if(strpos($msglower, '[/org]') !== FALSE) { //$message = preg_replace("/\[org=(\d+)\](.+?)\[\/org\]/ies", "parseat('\\1', '\\2','gid')", $message); $message = preg_replace_callback("/\[org=(\d+)\](.+?)\[\/org\]/is", function($matches){ return parseat($matches[1], $matches[2],'uid'); }, $message); } } if($allowsmilies) { $message = parsesmiles($message); } /*if($allowbbcode) { if(strpos($msglower, 'ed2k://') !== FALSE) { $message = preg_replace("/ed2k:\/\/(.+?)\//e", "parseed2k('\\1')", $message); } }*/ if($allowbbcode) { if(strpos($msglower, '[/url]') !== FALSE) { //$message = preg_replace("/\[url(=((https?|ftp|gopher|news|telnet|rtsp|mms|callto|bctp|thunder|qqdl|synacast){1}:\/\/|www\.|mailto:)?([^\r\n\[\"']+?))?\](.+?)\[\/url\]/ies", "parseurl('\\1', '\\5', '\\2')", $message); $message = preg_replace_callback("/\[url(=((https?|ftp|gopher|news|telnet|rtsp|mms|callto|bctp|thunder|qqdl|synacast){1}:\/\/|www\.|mailto:)?([^\r\n\[\"']+?))?\](.+?)\[\/url\]/is", function($matches) { return parseurl($matches[1], $matches[5], $matches[2]); }, $message); } if(strpos($msglower, '[/email]') !== FALSE) { //$message = preg_replace("/\[email(=([a-z0-9\-_.+]+)@([a-z0-9\-_]+[.][a-z0-9\-_.]+))?\](.+?)\[\/email\]/ies", "parseemail('\\1', '\\4')", $message); $message = preg_replace_callback("/\[email(=([a-z0-9\-_.+]+)@([a-z0-9\-_]+[.][a-z0-9\-_.]+))?\](.+?)\[\/email\]/is", function($matches) { return parseemail($matches[1], $matches[4]); }, $message); } $nest = 0; while(strpos($msglower, '[table') !== FALSE && strpos($msglower, '[/table]') !== FALSE){ //$message = preg_replace("/\[table(?:=(\d{1,4}%?)(?:,([\(\)%,#\w ]+))?)?\]\s*(.+?)\s*\[\/table\]/ies", "parsetable('\\1', '\\2', '\\3')", $message); $message = preg_replace_callback("/\[table(?:=(\d{1,4}%?)(?:,([\(\)%,#\w ]+))?)?\]\s*(.+?)\s*\[\/table\]/is", function($matches) { return parsetable($matches[1], $matches[2], $matches[3]); }, $message); if(++$nest > 4) break; } //修复UBB标签不闭合造成的问题,理论上所有标签都可以以此方法处理 $message=preg_replace(array( "/\[u\](.+?)\[\/u\]/i", "/\[b\](.+?)\[\/b\]/i", "/\[s\](.+?)\[\/s\]/i", "/\[i\](.+?)\[\/i\]/i" ), array( "[uu]\\1[/uu]", "[bb]\\1[/bb]", "[ss]\\1[/ss]", "[ii]\\1[/ii]", ),$message); $message = str_replace(array( '[/color]', '[/backcolor]', '[/size]', '[/font]', '[/align]', '[bb]', '[/bb]', '[ss]', '[/ss]', '[hr]', '[/p]', '[i=s]', '[ii]', '[/ii]', '[uu]', '[/uu]', '[list]', '[list=1]', '[list=a]', '[list=A]', "\r\n[*]", '[*]', '[/list]', '[indent]', '[/indent]', '[/float]' ), array( '', '', '', '', '', '', '', '', '', '
', '

', '', '', '', '', '', '