thinkphp中$think.get.tag系统模板变量乱码问题

来源:互联网 发布:抓取数据的免费软件 编辑:程序博客网 时间:2024/05/18 02:45

thinkphp中在使用如$think.get.tag系统模板变量时出现乱码,相关原理请看我的另一篇文章《PHP接收GET中文参数乱码深入研究》

    /**     +----------------------------------------------------------     * 特殊模板变量解析     * 格式 以 $Think. 打头的变量属于特殊模板变量     +----------------------------------------------------------     * @access public     +----------------------------------------------------------     * @param string $varStr  变量字符串     +----------------------------------------------------------     * @return string     +----------------------------------------------------------     */    public function parseThinkVar($varStr){        $vars = explode('.',$varStr);        $vars[1] = strtoupper(trim($vars[1]));        $parseStr = '';        if(count($vars)>=3){            $vars[2] = trim($vars[2]);            switch($vars[1]){                case 'SERVER':                    $parseStr = '$_SERVER[\''.strtoupper($vars[2]).'\']';break;                case 'GET':                    $parseStr = 'iconv("gb2312","UTF-8",$_GET[\''.$vars[2].'\'])';break;//问题出现在这里                case 'POST':                    $parseStr = '$_POST[\''.$vars[2].'\']';break;                case 'COOKIE':                    if(isset($vars[3])) {                        $parseStr = '$_COOKIE[\''.$vars[2].'\'][\''.$vars[3].'\']';                    }else{                        $parseStr = '$_COOKIE[\''.$vars[2].'\']';                    }break;                case 'SESSION':                    if(isset($vars[3])) {                        $parseStr = '$_SESSION[\''.$vars[2].'\'][\''.$vars[3].'\']';                    }else{                        $parseStr = '$_SESSION[\''.$vars[2].'\']';                    }                    break;                case 'ENV':                    $parseStr = '$_ENV[\''.$vars[2].'\']';break;                case 'REQUEST':                    $parseStr = '$_REQUEST[\''.$vars[2].'\']';break;                case 'CONST':                    $parseStr = strtoupper($vars[2]);break;                case 'LANG':                    $parseStr = 'L("'.$vars[2].'")';break;case 'CONFIG':                    if(isset($vars[3])) {                        $vars[2] .= '.'.$vars[3];                    }                    $parseStr = 'C("'.$vars[2].'")';break;                default:break;            }        }else if(count($vars)==2){            switch($vars[1]){                case 'NOW':                    $parseStr = "date('Y-m-d g:i a',time())";                    break;                case 'VERSION':                    $parseStr = 'THINK_VERSION';                    break;                case 'TEMPLATE':                    $parseStr = 'C("TMPL_FILE_NAME")';                    break;                case 'LDELIM':                    $parseStr = 'C("TMPL_L_DELIM")';                    break;                case 'RDELIM':                    $parseStr = 'C("TMPL_R_DELIM")';                    break;                default:                    if(defined($vars[1]))                        $parseStr = $vars[1];            }        }        return $parseStr;    }


原创粉丝点击