-1, 'codecount' => 0, 'codehtml' => array(), 'passwordlock' => array(), 'smiliesreplaced' => 0, 'seoarray' => array( 0 => '', 1 => $_SERVER['HTTP_HOST'], 2 => $_G['setting']['bbname'], 3 => str_replace('{bbname}', $_G['setting']['bbname'], $_G['setting']['seotitle']), 4 => $_G['setting']['seokeywords'], 5 => $_G['setting']['seodescription'] ) ); if(!isset($_G['cache']['bbcodes']) || !is_array($_G['cache']['bbcodes']) || !is_array($_G['cache']['smilies'])) { loadcache(array('bbcodes', 'smilies', 'smileytypes')); } function creditshide($creditsrequire, $message, $pid, $authorid) { global $_G; if($_G['member']['credits'] >= $creditsrequire || $_G['forum']['ismoderator'] || $_G['uid'] && $authorid == $_G['uid']) { return tpl_hide_credits($creditsrequire, str_replace('\\"', '"', $message)); } else { return tpl_hide_credits_hidden($creditsrequire); } } function expirehide($expiration, $creditsrequire, $message, $dateline) { $expiration = $expiration ? substr($expiration, 1) : 0; if($expiration && $dateline && (TIMESTAMP - $dateline) / 86400 > $expiration) { return str_replace('\\"', '"', $message); } return '[hide'.($creditsrequire ? "=$creditsrequire" : '').']'.str_replace('\\"', '"', $message).'[/hide]'; } function codedisp($code) { global $_G; $_G['forum_discuzcode']['pcodecount']++; $code = dhtmlspecialchars(str_replace('\\"', '"', $code)); $code = str_replace("\n", "
  • ", $code); $_G['forum_discuzcode']['codehtml'][$_G['forum_discuzcode']['pcodecount']] = tpl_codedisp($code); $_G['forum_discuzcode']['codecount']++; return "[\tDISCUZ_CODE_".$_G['forum_discuzcode']['pcodecount']."\t]"; } function karmaimg($rate, $ratetimes) { $karmaimg = ''; if($rate && $ratetimes) { $image = $rate > 0 ? 'agree.gif' : 'disagree.gif'; for($i = 0; $i < ceil(abs($rate) / $ratetimes); $i++) { $karmaimg .= ''; } } return $karmaimg; } function discuzcode($message, $smileyoff = false, $bbcodeoff = false, $htmlon = 0, $allowsmilies = 1, $allowbbcode = 1, $allowimgcode = 1, $allowhtml = 0, $jammer = 0, $parsetype = '0', $authorid = '0', $allowmediacode = '0', $pid = 0, $lazyload = 0, $pdateline = 0, $first = 0) { global $_G; static $authorreplyexist; if($pid && strpos($message, '[/password]') !== FALSE) { if($authorid != $_G['uid'] && !$_G['forum']['ismoderator']) { $message = preg_replace_callback("/\s?\[password\](.+?)\[\/password\]\s?/i", create_function('$matches', 'return parsepassword($matches[1], '.intval($pid).');'), $message); if($_G['forum_discuzcode']['passwordlock'][$pid]) { return ''; } } else { $message = preg_replace("/\s?\[password\](.+?)\[\/password\]\s?/i", "", $message); $_G['forum_discuzcode']['passwordauthor'][$pid] = 1; } } if($parsetype != 1 && !$bbcodeoff && $allowbbcode && (strpos($message, '[/code]') || strpos($message, '[/CODE]')) !== FALSE) { $message = preg_replace_callback("/\s?\[code\](.+?)\[\/code\]\s?/is", 'discuzcode_callback_codedisp_1', $message); } $msglower = strtolower($message); $htmlon = $htmlon && $allowhtml ? 1 : 0; if(!$htmlon) { $message = dhtmlspecialchars($message); } else { $message = preg_replace("/]*?>(.*?)<\/script>/i", '', $message); } if($_G['setting']['plugins']['func'][HOOKTYPE]['discuzcode']) { $_G['discuzcodemessage'] = & $message; $param = func_get_args(); hookscript('discuzcode', 'global', 'funcs', array('param' => $param, 'caller' => 'discuzcode'), 'discuzcode'); } if(!$smileyoff && $allowsmilies) { $message = parsesmiles($message); } if($_G['setting']['allowattachurl'] && strpos($msglower, 'attach://') !== FALSE) { $message = preg_replace_callback("/attach:\/\/(\d+)\.?(\w*)/i", 'discuzcode_callback_parseattachurl_12', $message); } if($allowbbcode) { if(strpos($msglower, 'ed2k://') !== FALSE) { $message = preg_replace_callback("/ed2k:\/\/(.+?)\//", 'discuzcode_callback_parseed2k_1', $message); } } if(!$bbcodeoff && $allowbbcode) { if(strpos($msglower, '[/url]') !== FALSE) { $message = preg_replace_callback("/\[url(=((https?|ftp|gopher|news|telnet|rtsp|mms|callto|bctp|thunder|qqdl|synacast){1}:\/\/|www\.|mailto:)?([^\r\n\[\"']+?))?\](.+?)\[\/url\]/is", 'discuzcode_callback_parseurl_152', $message); } if(strpos($msglower, '[/email]') !== FALSE) { $message = preg_replace_callback("/\[email(=([a-z0-9\-_.+]+)@([a-z0-9\-_]+[.][a-z0-9\-_.]+))?\](.+?)\[\/email\]/is", 'discuzcode_callback_parseemail_14', $message); } $nest = 0; while(strpos($msglower, '[table') !== FALSE && strpos($msglower, '[/table]') !== FALSE){ $message = preg_replace_callback("/\[table(?:=(\d{1,4}%?)(?:,([\(\)%,#\w ]+))?)?\]\s*(.+?)\s*\[\/table\]/is", 'discuzcode_callback_parsetable_123', $message); if(++$nest > 4) break; } $message = str_replace(array( '[/color]', '[/backcolor]', '[/size]', '[/font]', '[/align]', '[b]', '[/b]', '[s]', '[/s]', '[hr]', '[/p]', '[i=s]', '[i]', '[/i]', '[u]', '[/u]', '[list]', '[list=1]', '[list=a]', '[list=A]', "\r\n[*]", '[*]', '[/list]', '[indent]', '[/indent]', '[/float]' ), array( '', '', '', '', '', '', '', '', '', '
    ', '

    ', '', '', '', '', '', '
      ', '
        ', '
          ', '
            ', '
          • ', '
          • ', '
          ', '
          ', '
          ', '' ), preg_replace(array( "/\[color=([#\w]+?)\]/i", "/\[color=((rgb|rgba)\([\d\s,]+?\))\]/i", "/\[backcolor=([#\w]+?)\]/i", "/\[backcolor=((rgb|rgba)\([\d\s,]+?\))\]/i", "/\[size=(\d{1,2}?)\]/i", "/\[size=(\d{1,2}(\.\d{1,2}+)?(px|pt)+?)\]/i", "/\[font=([^\[\<]+?)\]/i", "/\[align=(left|center|right)\]/i", "/\[p=(\d{1,2}|null), (\d{1,2}|null), (left|center|right)\]/i", "/\[float=left\]/i", "/\[float=right\]/i" ), array( "", "", "", "", "", "", "", "
          ", "

          ", "", "" ), $message)); if($pid && !defined('IN_MOBILE')) { $message = preg_replace_callback("/\s?\[postbg\]\s*([^\[\<\r\n;'\"\?\(\)]+?)\s*\[\/postbg\]\s?/is", create_function('$matches', 'return parsepostbg($matches[1], '.intval($pid).');'), $message); } else { $message = preg_replace("/\s?\[postbg\]\s*([^\[\<\r\n;'\"\?\(\)]+?)\s*\[\/postbg\]\s?/is", "", $message); } if($parsetype != 1) { if(strpos($msglower, '[/quote]') !== FALSE) { $message = preg_replace("/\s?\[quote\][\n\r]*(.+?)[\n\r]*\[\/quote\]\s?/is", tpl_quote(), $message); } if(strpos($msglower, '[/free]') !== FALSE) { $message = preg_replace("/\s*\[free\][\n\r]*(.+?)[\n\r]*\[\/free\]\s*/is", tpl_free(), $message); } } if(!defined('IN_MOBILE')) { if(strpos($msglower, '[/media]') !== FALSE) { $message = preg_replace_callback("/\[media=([\w,]+)\]\s*([^\[\<\r\n]+?)\s*\[\/media\]/is", $allowmediacode ? 'discuzcode_callback_parsemedia_12' : 'discuzcode_callback_bbcodeurl_2', $message); } if(strpos($msglower, '[/audio]') !== FALSE) { $message = preg_replace_callback("/\[audio(=1)*\]\s*([^\[\<\r\n]+?)\s*\[\/audio\]/is", $allowmediacode ? 'discuzcode_callback_parseaudio_2' : 'discuzcode_callback_bbcodeurl_2', $message); } if(strpos($msglower, '[/flash]') !== FALSE) { $message = preg_replace_callback("/\[flash(=(\d+),(\d+))?\]\s*([^\[\<\r\n]+?)\s*\[\/flash\]/is", $allowmediacode ? 'discuzcode_callback_parseflash_234' : 'discuzcode_callback_bbcodeurl_4', $message); } } else { if(strpos($msglower, '[/media]') !== FALSE) { $message = preg_replace("/\[media=([\w,]+)\]\s*([^\[\<\r\n]+?)\s*\[\/media\]/is", "[media]\\2[/media]", $message); } if(strpos($msglower, '[/audio]') !== FALSE) { $message = preg_replace("/\[audio(=1)*\]\s*([^\[\<\r\n]+?)\s*\[\/audio\]/is", "[media]\\2[/media]", $message); } if(strpos($msglower, '[/flash]') !== FALSE) { $message = preg_replace("/\[flash(=(\d+),(\d+))?\]\s*([^\[\<\r\n]+?)\s*\[\/flash\]/is", "[media]\\4[/media]", $message); } } if($parsetype != 1 && $allowbbcode < 0 && isset($_G['cache']['bbcodes'][-$allowbbcode])) { $message = preg_replace($_G['cache']['bbcodes'][-$allowbbcode]['searcharray'], $_G['cache']['bbcodes'][-$allowbbcode]['replacearray'], $message); } if($parsetype != 1 && strpos($msglower, '[/hide]') !== FALSE && $pid) { if($_G['setting']['hideexpiration'] && $pdateline && (TIMESTAMP - $pdateline) / 86400 > $_G['setting']['hideexpiration']) { $message = preg_replace("/\[hide[=]?(d\d+)?[,]?(\d+)?\]\s*(.*?)\s*\[\/hide\]/is", "\\3", $message); $msglower = strtolower($message); } if(strpos($msglower, '[hide=d') !== FALSE) { $message = preg_replace_callback("/\[hide=(d\d+)?[,]?(\d+)?\]\s*(.*?)\s*\[\/hide\]/is", create_function('$matches', 'return expirehide($matches[1], $matches[2], $matches[3], '.intval($pdateline).');'), $message); $msglower = strtolower($message); } if(strpos($msglower, '[hide]') !== FALSE) { if($authorreplyexist === null) { if(!$_G['forum']['ismoderator']) { if($_G['uid']) { $_post = C::t('forum_post')->fetch('tid:'.$_G['tid'], $pid); $authorreplyexist = $_post['tid'] == $_G['tid'] ? C::t('forum_post')->fetch_pid_by_tid_authorid($_G['tid'], $_G['uid']) : FALSE; } } else { $authorreplyexist = TRUE; } } if($authorreplyexist) { $message = preg_replace("/\[hide\]\s*(.*?)\s*\[\/hide\]/is", tpl_hide_reply(), $message); } else { $message = preg_replace("/\[hide\](.*?)\[\/hide\]/is", tpl_hide_reply_hidden(), $message); $message = ''.$message; } } if(strpos($msglower, '[hide=') !== FALSE) { $message = preg_replace_callback("/\[hide=(\d+)\]\s*(.*?)\s*\[\/hide\]/is", create_function('$matches', 'return creditshide($matches[1], $matches[2], '.intval($pid).', '.intval($authorid).');'), $message); } } } if(!$bbcodeoff) { if($parsetype != 1 && strpos($msglower, '[swf]') !== FALSE) { $message = preg_replace_callback("/\[swf\]\s*([^\[\<\r\n]+?)\s*\[\/swf\]/is", 'discuzcode_callback_bbcodeurl_1', $message); } $attrsrc = !IS_ROBOT && $lazyload ? 'file' : 'src'; if(strpos($msglower, '[/img]') !== FALSE) { $message = preg_replace_callback("/\[img\]\s*([^\[\<\r\n]+?)\s*\[\/img\]/is", create_function('$matches', 'return '.intval($allowimgcode).' ? parseimg(0, 0, $matches[1], '.intval($lazyload).', '.intval($pid).', \'onmouseover="img_onmouseoverfunc(this)" \'.('.intval($lazyload).' ? \'lazyloadthumb="1"\' : \'onload="thumbImg(this)"\')) : ('.intval($allowbbcode).' ? (!defined(\'IN_MOBILE\') ? bbcodeurl($matches[1], \'{url}\') : bbcodeurl($matches[1], \'\')) : bbcodeurl($matches[1], \'{url}\'));'), $message); $message = preg_replace_callback("/\[img=(\d{1,4})[x|\,](\d{1,4})\]\s*([^\[\<\r\n]+?)\s*\[\/img\]/is", create_function('$matches', 'return '.intval($allowimgcode).' ? parseimg($matches[1], $matches[2], $matches[3], '.intval($lazyload).', '.intval($pid).') : ('.intval($allowbbcode).' ? (!defined(\'IN_MOBILE\') ? bbcodeurl($matches[3], \'{url}\') : bbcodeurl($matches[3], \'\')) : bbcodeurl($matches[3], \'{url}\'));'), $message); } } for($i = 0; $i <= $_G['forum_discuzcode']['pcodecount']; $i++) { $message = str_replace("[\tDISCUZ_CODE_$i\t]", $_G['forum_discuzcode']['codehtml'][$i], $message); } unset($msglower); if($jammer) { $message = preg_replace_callback("/\r\n|\n|\r/", 'discuzcode_callback_jammer', $message); } if($first) { if(helper_access::check_module('group')) { $message = preg_replace("/\[groupid=(\d+)\](.*)\[\/groupid\]/i", lang('forum/template', 'fromgroup').': \\2', $message); } else { $message = preg_replace("/(\[groupid=\d+\].*\[\/groupid\])/i", '', $message); } } return $htmlon ? $message : nl2br(str_replace(array("\t", ' ', ' '), array('        ', '   ', '  '), $message)); } function discuzcode_callback_codedisp_1($matches) { return codedisp($matches[1]); } function discuzcode_callback_parseattachurl_12($matches) { return parseattachurl($matches[1], $matches[2], 1); } function discuzcode_callback_parseed2k_1($matches) { return parseed2k($matches[1]); } function discuzcode_callback_parseurl_152($matches) { return parseurl($matches[1], $matches[5], $matches[2]); } function discuzcode_callback_parseemail_14($matches) { return parseemail($matches[1], $matches[4]); } function discuzcode_callback_parsetable_123($matches) { return parsetable($matches[1], $matches[2], $matches[3]); } function discuzcode_callback_parsemedia_12($matches) { return parsemedia($matches[1], $matches[2]); } function discuzcode_callback_bbcodeurl_2($matches) { return bbcodeurl($matches[2], '{url}'); } function discuzcode_callback_parseaudio_2($matches) { return parseaudio($matches[2], 400); } function discuzcode_callback_parseflash_234($matches) { return parseflash($matches[2], $matches[3], $matches[4]); } function discuzcode_callback_bbcodeurl_4($matches) { return bbcodeurl($matches[4], '{url}'); } function discuzcode_callback_bbcodeurl_1($matches) { return bbcodeurl($matches[1], ' Flash: {url} '); } function discuzcode_callback_jammer($matches) { return jammer(); } function parseurl($url, $text, $scheme) { global $_G; if(!$url && preg_match("/((https?|ftp|gopher|news|telnet|rtsp|mms|callto|bctp|thunder|qqdl|synacast){1}:\/\/|www\.)[^\[\"']+/i", trim($text), $matches)) { $url = $matches[0]; $length = 65; if(strlen($url) > $length) { $text = substr($url, 0, intval($length * 0.5)).' ... '.substr($url, - intval($length * 0.3)); } return ''.$text.''; } else { $url = substr($url, 1); if(substr(strtolower($url), 0, 4) == 'www.') { $url = 'http://'.$url; } $url = !$scheme ? $_G['siteurl'].$url : $url; return ''.$text.''; } } function parseflash($w, $h, $url) { $w = !$w ? 550 : $w; $h = !$h ? 400 : $h; preg_match("/((https?){1}:\/\/|www\.)[^\r\n\[\"'\?]+(\.swf|\.flv)(\?[^\r\n\[\"'\?]+)?/i", $url, $matches); $url = $matches[0]; $randomid = 'swf_'.random(3); if(fileext($url) != 'flv') { return ''; } else { return ''; } } function parseed2k($url) { global $_G; list(,$type, $name, $size,) = explode('|', $url); $url = 'ed2k://'.$url.'/'; $name = addslashes($name); if($type == 'file') { $ed2kid = 'ed2k_'.random(3); return ''.dhtmlspecialchars(urldecode($name)).' ('.sizecount($size).')'; } else { return ''.$url.''; } } function parseattachurl($aid, $ext, $ignoretid = 0) { global $_G; $_G['forum_skipaidlist'][] = $aid; return $_G['siteurl'].'forum.php?mod=attachment&aid='.aidencode($aid, $ext, $ignoretid ? '' : $_G['tid']).($ext ? '&request=yes&_f=.'.$ext : ''); } function parseemail($email, $text) { $text = str_replace('\"', '"', $text); if(!$email && preg_match("/\s*([a-z0-9\-_.+]+)@([a-z0-9\-_]+[.][a-z0-9\-_.]+)\s*/i", $text, $matches)) { $email = trim($matches[0]); return ''.$email.''; } else { return ''.$text.''; } } function parsetable($width, $bgcolor, $message) { if(strpos($message, '[/tr]') === FALSE && strpos($message, '[/td]') === FALSE) { $rows = explode("\n", $message); $s = !defined('IN_MOBILE') ? '' : '>') : '
          '; foreach($rows as $row) { $s .= ''; } $s .= '
          '.str_replace(array('\|', '|', '\n'), array('|', '', "\n"), $row).'
          '; return $s; } else { if(!preg_match("/^\[tr(?:=([\(\)\s%,#\w]+))?\]\s*\[td([=\d,%]+)?\]/", $message) && !preg_match("/^]*?>\s*]*?>/", $message)) { return str_replace('\\"', '"', preg_replace("/\[tr(?:=([\(\)\s%,#\w]+))?\]|\[td([=\d,%]+)?\]|\[\/td\]|\[\/tr\]/", '', $message)); } if(substr($width, -1) == '%') { $width = substr($width, 0, -1) <= 98 ? intval($width).'%' : '98%'; } else { $width = intval($width); $width = $width ? ($width <= 560 ? $width.'px' : '98%') : ''; } $message = preg_replace_callback("/\[tr(?:=([\(\)\s%,#\w]+))?\]\s*\[td(?:=(\d{1,4}%?))?\]/i", 'parsetable_callback_parsetrtd_12', $message); $message = preg_replace_callback("/\[\/td\]\s*\[td(?:=(\d{1,4}%?))?\]/i", 'parsetable_callback_parsetrtd_1', $message); $message = preg_replace_callback("/\[tr(?:=([\(\)\s%,#\w]+))?\]\s*\[td(?:=(\d{1,2}),(\d{1,2})(?:,(\d{1,4}%?))?)?\]/i", 'parsetable_callback_parsetrtd_1234', $message); $message = preg_replace_callback("/\[\/td\]\s*\[td(?:=(\d{1,2}),(\d{1,2})(?:,(\d{1,4}%?))?)?\]/i", 'parsetable_callback_parsetrtd_123', $message); $message = preg_replace("/\[\/td\]\s*\[\/tr\]\s*/i", '', $message); return (!defined('IN_MOBILE') ? '' : '>') : '
          '). str_replace('\\"', '"', $message).'
          '; } } function parsetable_callback_parsetrtd_12($matches) { return parsetrtd($matches[1], 0, 0, $matches[2]); } function parsetable_callback_parsetrtd_1($matches) { return parsetrtd('td', 0, 0, $matches[1]); } function parsetable_callback_parsetrtd_1234($matches) { return parsetrtd($matches[1], $matches[2], $matches[3], $matches[4]); } function parsetable_callback_parsetrtd_123($matches) { return parsetrtd('td', $matches[1], $matches[2], $matches[3]); } function parsetrtd($bgcolor, $colspan, $rowspan, $width) { return ($bgcolor == 'td' ? '' : '').' 1 ? ' colspan="'.$colspan.'"' : '').($rowspan > 1 ? ' rowspan="'.$rowspan.'"' : '').($width && !defined('IN_MOBILE') ? ' width="'.$width.'"' : '').'>'; } function parseaudio($url, $width = 400) { $url = addslashes($url); if(!in_array(strtolower(substr($url, 0, 6)), array('http:/', 'https:', 'ftp://', 'rtsp:/', 'mms://')) && !preg_match('/^static\//', $url) && !preg_match('/^data\//', $url)) { return dhtmlspecialchars($url); } $ext = fileext($url); switch($ext) { case 'mp3': $randomid = 'mp3_'.random(3); return ''; case 'wma': case 'mid': case 'wav': return ''; case 'ra': case 'rm': case 'ram': $mediaid = 'media_'.random(3); return ''; } } function parsemedia($params, $url) { $params = explode(',', $params); $width = intval($params[1]) > 800 ? 800 : intval($params[1]); $height = intval($params[2]) > 600 ? 600 : intval($params[2]); $url = addslashes($url); if(!in_array(strtolower(substr($url, 0, 6)), array('http:/', 'https:', 'ftp://', 'rtsp:/', 'mms://')) && !preg_match('/^static\//', $url) && !preg_match('/^data\//', $url)) { return dhtmlspecialchars($url); } if($flv = parseflv($url, $width, $height)) { return $flv; } if(in_array(count($params), array(3, 4))) { $type = $params[0]; $url = htmlspecialchars(str_replace(array('<', '>'), '', str_replace('\\"', '\"', $url))); switch($type) { case 'mp3': case 'wma': case 'ra': case 'ram': case 'wav': case 'mid': return parseaudio($url, $width); case 'rm': case 'rmvb': case 'rtsp': $mediaid = 'media_'.random(3); return '
          '; case 'flv': $randomid = 'flv_'.random(3); return ''; case 'swf': $randomid = 'swf_'.random(3); return ''; case 'asf': case 'asx': case 'wmv': case 'mms': case 'avi': case 'mpg': case 'mpeg': return ''; case 'mov': return ''; default: return ''.$url.''; } } return; } function bbcodeurl($url, $tags) { if(!preg_match("/<.+?>/s", $url)) { if(!in_array(strtolower(substr($url, 0, 6)), array('http:/', 'https:', 'ftp://', 'rtsp:/', 'mms://')) && !preg_match('/^static\//', $url) && !preg_match('/^data\//', $url)) { $url = 'http://'.$url; } return str_replace(array('submit', 'member.php?mod=logging'), array('', ''), str_replace('{url}', addslashes($url), $tags)); } else { return ' '.$url; } } function jammer() { $randomstr = ''; for($i = 0; $i < mt_rand(5, 15); $i++) { $randomstr .= chr(mt_rand(32, 59)).' '.chr(mt_rand(63, 126)); } return mt_rand(0, 1) ? ''.$randomstr.''."\r\n" : "\r\n".''.$randomstr.''; } function highlightword($text, $words, $prepend) { $text = str_replace('\"', '"', $text); foreach($words AS $key => $replaceword) { $text = str_replace($replaceword, ''.$replaceword.'', $text); } return "$prepend$text"; } function parseflv($url, $width = 0, $height = 0) { $lowerurl = strtolower($url); $flv = $iframe = $imgurl = ''; if($lowerurl != str_replace(array('player.youku.com/player.php/sid/','tudou.com/v/','player.ku6.com/refer/'), '', $lowerurl)) { $flv = $url; } elseif(strpos($lowerurl, 'v.youku.com/v_show/') !== FALSE) { $ctx = stream_context_create(array('http' => array('timeout' => 10))); if(preg_match("/^https?:\/\/v.youku.com\/v_show\/id_([^\/]+)(.html|)/i", $url, $matches)) { $flv = 'https://player.youku.com/player.php/sid/'.$matches[1].'/v.swf'; $iframe = 'https://player.youku.com/embed/'.$matches[1]; if(!$width && !$height) { $api = 'http://v.youku.com/player/getPlayList/VideoIDS/'.$matches[1]; $str = stripslashes(file_get_contents($api, false, $ctx)); if(!empty($str) && preg_match("/\"logo\":\"(.+?)\"/i", $str, $image)) { $url = substr($image[1], 0, strrpos($image[1], '/')+1); $filename = substr($image[1], strrpos($image[1], '/')+2); $imgurl = $url.'0'.$filename; } } } } elseif(strpos($lowerurl, 'tudou.com/programs/view/') !== FALSE) { if(preg_match("/^http:\/\/(www.)?tudou.com\/programs\/view\/([^\/]+)/i", $url, $matches)) { $flv = 'http://www.tudou.com/v/'.$matches[2]; $iframe = 'http://www.tudou.com/programs/view/html5embed.action?code='.$matches[2]; if(!$width && !$height) { $str = file_get_contents($url, false, $ctx); if(!empty($str) && preg_match("/(.+?)<\/span>/i", $str, $image)) { $imgurl = trim($image[1]); } } } } elseif(strpos($lowerurl, 'v.ku6.com/show/') !== FALSE) { if(preg_match("/^http:\/\/v.ku6.com\/show\/([^\/]+).html/i", $url, $matches)) { $flv = 'http://player.ku6.com/refer/'.$matches[1].'/v.swf'; if(!$width && !$height) { $api = 'http://vo.ku6.com/fetchVideo4Player/1/'.$matches[1].'.html'; $str = file_get_contents($api, false, $ctx); if(!empty($str) && preg_match("/\"picpath\":\"(.+?)\"/i", $str, $image)) { $imgurl = str_replace(array('\u003a', '\u002e'), array(':', '.'), $image[1]); } } } } elseif(strpos($lowerurl, 'v.ku6.com/special/show_') !== FALSE) { if(preg_match("/^http:\/\/v.ku6.com\/special\/show_\d+\/([^\/]+).html/i", $url, $matches)) { $flv = 'http://player.ku6.com/refer/'.$matches[1].'/v.swf'; if(!$width && !$height) { $api = 'http://vo.ku6.com/fetchVideo4Player/1/'.$matches[1].'.html'; $str = file_get_contents($api, false, $ctx); if(!empty($str) && preg_match("/\"picpath\":\"(.+?)\"/i", $str, $image)) { $imgurl = str_replace(array('\u003a', '\u002e'), array(':', '.'), $image[1]); } } } } elseif(strpos($lowerurl, 'www.youtube.com/watch?') !== FALSE) { if(preg_match("/^https?:\/\/www.youtube.com\/watch\?v=([^\/&]+)&?/i", $url, $matches)) { $flv = 'https://www.youtube.com/v/'.$matches[1].'&hl=zh_CN&fs=1'; $iframe = 'https://www.youtube.com/embed/'.$matches[1]; if(!$width && !$height) { $str = file_get_contents($url, false, $ctx); if(!empty($str) && preg_match("/'VIDEO_HQ_THUMB':\s'(.+?)'/i", $str, $image)) { $url = substr($image[1], 0, strrpos($image[1], '/')+1); $filename = substr($image[1], strrpos($image[1], '/')+3); $imgurl = $url.$filename; } } } } elseif(strpos($lowerurl, 'video.sina.com.cn/v/b/') !== FALSE) { if(preg_match("/^http:\/\/video.sina.com.cn\/v\/b\/(\d+)-(\d+).html/i", $url, $matches)) { $flv = 'http://vhead.blog.sina.com.cn/player/outer_player.swf?vid='.$matches[1]; if(!$width && !$height) { $api = 'http://interface.video.sina.com.cn/interface/common/getVideoImage.php?vid='.$matches[1]; $str = file_get_contents($api, false, $ctx); if(!empty($str)) { $imgurl = str_replace('imgurl=', '', trim($str)); } } } } elseif(strpos($lowerurl, 'you.video.sina.com.cn/b/') !== FALSE) { if(preg_match("/^http:\/\/you.video.sina.com.cn\/b\/(\d+)-(\d+).html/i", $url, $matches)) { $flv = 'http://vhead.blog.sina.com.cn/player/outer_player.swf?vid='.$matches[1]; if(!$width && !$height) { $api = 'http://interface.video.sina.com.cn/interface/common/getVideoImage.php?vid='.$matches[1]; $str = file_get_contents($api, false, $ctx); if(!empty($str)) { $imgurl = str_replace('imgurl=', '', trim($str)); } } } } elseif(strpos($lowerurl, 'http://my.tv.sohu.com/u/') !== FALSE) { if(preg_match("/^http:\/\/my.tv.sohu.com\/u\/[^\/]+\/(\d+)/i", $url, $matches)) { $flv = 'http://v.blog.sohu.com/fo/v4/'.$matches[1]; if(!$width && !$height) { $api = 'http://v.blog.sohu.com/videinfo.jhtml?m=view&id='.$matches[1].'&outType=3'; $str = file_get_contents($api, false, $ctx); if(!empty($str) && preg_match("/\"cutCoverURL\":\"(.+?)\"/i", $str, $image)) { $imgurl = str_replace(array('\u003a', '\u002e'), array(':', '.'), $image[1]); } } } } elseif(strpos($lowerurl, 'http://v.blog.sohu.com/u/') !== FALSE) { if(preg_match("/^http:\/\/v.blog.sohu.com\/u\/[^\/]+\/(\d+)/i", $url, $matches)) { $flv = 'http://v.blog.sohu.com/fo/v4/'.$matches[1]; if(!$width && !$height) { $api = 'http://v.blog.sohu.com/videinfo.jhtml?m=view&id='.$matches[1].'&outType=3'; $str = file_get_contents($api, false, $ctx); if(!empty($str) && preg_match("/\"cutCoverURL\":\"(.+?)\"/i", $str, $image)) { $imgurl = str_replace(array('\u003a', '\u002e'), array(':', '.'), $image[1]); } } } } elseif(strpos($lowerurl, 'http://www.56.com') !== FALSE) { if(preg_match("/^http:\/\/www.56.com\/\S+\/play_album-aid-(\d+)_vid-(.+?).html/i", $url, $matches)) { $flv = 'http://player.56.com/v_'.$matches[2].'.swf'; $matches[1] = $matches[2]; } elseif(preg_match("/^http:\/\/www.56.com\/\S+\/([^\/]+).html/i", $url, $matches)) { $flv = 'http://player.56.com/'.$matches[1].'.swf'; } if(!$width && !$height && !empty($matches[1])) { $api = 'http://vxml.56.com/json/'.str_replace('v_', '', $matches[1]).'/?src=out'; $str = file_get_contents($api, false, $ctx); if(!empty($str) && preg_match("/\"img\":\"(.+?)\"/i", $str, $image)) { $imgurl = trim($image[1]); } } } if($flv) { if(!$width && !$height) { return array('flv' => $flv, 'imgurl' => $imgurl); } else { $width = addslashes($width); $height = addslashes($height); $flv = addslashes($flv); $iframe = addslashes($iframe); $randomid = 'flv_'.random(3); $enablemobile = $iframe ? 'mobileplayer() ? "" : ' : ''; return ''; } } else { return FALSE; } } function parseimg($width, $height, $src, $lazyload, $pid, $extra = '') { global $_G; static $styleoutput = null; if($_G['setting']['domainwhitelist_affectimg']) { $tmp = parse_url($src); if(!empty($tmp['host']) && !iswhitelist($tmp['host'])) { return $src; } } if(strstr($src, 'file:') || substr($src, 1, 1) == ':') { return $src; } if($width > $_G['setting']['imagemaxwidth']) { $height = intval($_G['setting']['imagemaxwidth'] * $height / $width); $width = $_G['setting']['imagemaxwidth']; if(defined('IN_MOBILE')) { $extra = ''; } else { $extra = 'onmouseover="img_onmouseoverfunc(this)" onclick="zoom(this)" style="cursor:pointer"'; } } $attrsrc = !IS_ROBOT && $lazyload ? 'file' : 'src'; $rimg_id = random(5); $GLOBALS['aimgs'][$pid][] = $rimg_id; $guestviewthumb = !empty($_G['setting']['guestviewthumb']['flag']) && empty($_G['uid']); $img = ''; if($guestviewthumb) { if(!isset($styleoutput)) { $img .= guestviewthumbstyle(); $styleoutput = true; } $img .= '

          '; } else { if(defined('IN_MOBILE')) { $img = ' 0 ? ' width="'.$width.'"' : '').($height > 0 ? ' height="'.$height.'"' : '').' src="{url}" border="0" alt="" />'; } else { $img = ' 0 ? ' width="'.$width.'"' : '').($height > 0 ? ' height="'.$height.'"' : '').' '.$attrsrc.'="{url}" '.($extra ? $extra.' ' : '').'border="0" alt="" />'; } } $code = bbcodeurl($src, $img); if($guestviewthumb) { $code = str_replace('{loginurl}', 'member.php?mod=logging&action=login', $code); } return $code; } function parsesmiles(&$message) { global $_G; static $enablesmiles; if($enablesmiles === null) { $enablesmiles = false; if(!empty($_G['cache']['smilies']) && is_array($_G['cache']['smilies'])) { foreach($_G['cache']['smilies']['replacearray'] AS $key => $smiley) { $_G['cache']['smilies']['replacearray'][$key] = ''; } $enablesmiles = true; } } $enablesmiles && $message = preg_replace($_G['cache']['smilies']['searcharray'], $_G['cache']['smilies']['replacearray'], $message, $_G['setting']['maxsmilies']); return $message; } function parsepostbg($bgimg, $pid) { global $_G; static $postbg; if($postbg[$pid]) { return ''; } loadcache('postimg'); foreach($_G['cache']['postimg']['postbg'] as $postbg) { if($postbg['url'] != $bgimg) { continue; } $bgimg = dhtmlspecialchars(basename($bgimg), ENT_QUOTES); $postbg[$pid] = true; $_G['forum_posthtml']['header'][$pid] .= ''; break; } return ''; } function parsepassword($password, $pid) { global $_G; static $postpw; if($postpw[$pid]) { return ''; } $postpw[$pid] = true; if(empty($_G['cookie']['postpw_'.$pid]) || $_G['cookie']['postpw_'.$pid] != md5($password)) { $_G['forum_discuzcode']['passwordlock'][$pid] = 1; } return ''; } function guestviewthumbstyle() { static $styleoutput = null; $return = ''; if ($styleoutput === null) { global $_G; $return = ''; $styleoutput = true; } return $return; } ?>