thinksns模板乱码解决

上传人:第*** 文档编号:32698707 上传时间:2018-02-12 格式:DOC 页数:9 大小:46.50KB
返回 下载 相关 举报
thinksns模板乱码解决_第1页
第1页 / 共9页
thinksns模板乱码解决_第2页
第2页 / 共9页
thinksns模板乱码解决_第3页
第3页 / 共9页
thinksns模板乱码解决_第4页
第4页 / 共9页
thinksns模板乱码解决_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《thinksns模板乱码解决》由会员分享,可在线阅读,更多相关《thinksns模板乱码解决(9页珍藏版)》请在金锄头文库上搜索。

1、thinksns 页面出现乱码可能情况之一:此处是控制标签的解析,关闭解析,本地服务器上,出现的错误,与正式服上一样。Template.class.php 文件/* TagLib 库解析* access public* param string $tagLib 要解析的标签库* param string $content 要解析的模板内容* param boolen $hide 是否隐藏标签库前缀* return string*/public function parseTagLib($tagLib,&$content,$hide=false) $begin = $this-configtag

2、lib_begin;$end = $this-configtaglib_end;$tLib = get_instance_of(TagLibCx);if($tLib-valid() /如果标签库有效则取出支持标签列表$tagList = $tLib-getTagList();/* if($_GETapp=admin&$tagList1name!=php)/twx314/print_r($_GET);/print_r($tagList);exit;/unset($tagList1);$tagList = array(name=php,nested=true,bodycontent=true);

3、*/遍历标签列表进行模板标签解析foreach($tagList as $tag) / 实际要解析的标签名称if( !$hide)$startTag = $tagLib.:.$tagname;else$startTag = $tagname;/ 检查可嵌套标签以及嵌套级别if($tagnested & $this-configtag_level1)$level = $this-configtag_level;else$level = 1;$endTag = $startTag;/由于网站程序解析出错,标签解析不了,出现乱码,暂时关闭此处的标签判断if(false != stripos($con

4、tent,C(TAGLIB_BEGIN).$startTag) if(empty($tagattribute)/ 无属性标签if($tagcontent !=empty)for($i=0;$iparseXmlTag(.$tagLib.,.$tagname.,1,2),$content);else$content = preg_replace(/.$begin.$startTag.(s*?)/(s*?).$end./eis,$this-parseXmlTag(.$tagLib.,.$tagname.,1,),$content);elseif($tagcontent !=empty) /闭合标签解

5、析for($i=0;$iparseXmlTag(.$tagLib.,.$tagname.,1,2),$content);else /开放标签解析/ 开始标签必须有一个空格$content = preg_replace(/.$begin.$startTag.s(.*?)/(s*?).$end./eis,$this-parseXmlTag(.$tagLib.,.$tagname.,1,),$content);二:服务器上的标签库 xml 与本地的完全一样,服务器上时好时坏。因此,怀疑可能是生成临时文件出现问题。检查出错时,临时文件的内容。因为服务器上,有时正常,有时不正常,抽取多次,进行选样。如果

6、是生成临时文件有问题,检查生成临时文件这个过程环节是哪里出错。functions.inc.php 中的 fetch 函数:/ 渲染模板/$charset 不能是 UTF8 否则 IE 下会乱码function fetch($templateFile=,$tvar=array(),$charset=utf-8,$contentType=text/html,$display=false) /注入全局变量 tsglobal $ts;$tvarts = $ts;unset($tvartemplateCacheFile,$tvartemplateFile);/$GLOBALS_viewStartTime

7、 = microtime(TRUE);if(null=$templateFile)/ 使用 null 参数作为模版名直接返回不做任何输出return ;if(empty($charset) $charset = C(DEFAULT_CHARSET);/print_r($display);print_r($templateFile);/ 网页字符编码header(Content-Type:.$contentType.; charset=.$charset);header(Cache-control: private); /支持页面回跳/页面缓存ob_start();ob_implicit_flu

8、sh(0);/ 模版名为空.if(=$templateFile)$templateFile = APP_TPL_PATH./.MODULE_NAME./.ACTION_NAME.html;/ 模版名为 ACTION_NAMEelseif(file_exists(APP_TPL_PATH./.MODULE_NAME./.$templateFile.html) $templateFile = APP_TPL_PATH./.MODULE_NAME./.$templateFile.html;elseif(file_exists(APP_TPL_PATH./.$templateFile.html) $t

9、emplateFile = APP_TPL_PATH./.$templateFile.html;/ 模版是绝对路径elseif(file_exists($templateFile)/ 模版不存在elsethrow_exception(L(_TEMPLATE_NOT_EXIST_).$templateFile.);/模版缓存文件$templateCacheFile = C(TMPL_CACHE_PATH)./.APP_NAME._.tsmd5($templateFile).php;/载入模版缓存if(!$ts_debug & file_exists($templateCacheFile) /tw

10、x314 &false/if(1=2) /TODO 开发extract($tvar, EXTR_OVERWRITE);/载入模版缓存文件if(C(TS_CACHE_TYPE)=SAEMC)$mmc=memcache_init();if($mmc=false) exit( mc init failedn );$content = memcache_get($mmc,$templateCacheFile);eval( ? . $content);elseinclude $templateCacheFile;/重新编译elsetshook(tpl_compile,array(templateFile

11、,$templateFile);/ 缓存无效 重新编译tsload(CORE_LIB_PATH./Template.class.php);tsload(CORE_LIB_PATH./TagLib.class.php);tsload(CORE_LIB_PATH./TagLib/TagLibCx.class.php);$tpl = Template:getInstance();/ 编译并加载模板文件$tpl-load($templateFile,$tvar,$charset);/ 获取并清空缓存$content = ob_get_clean();/print_r($replace);print_r

12、(time();exit;/ 模板内容替换$replace = array(_ROOT_ = SITE_URL, / 当前网站地址_UPLOAD_ = UPLOAD_URL, / 上传文件地址/_PUBLIC_ = PUBLIC_URL, / 公共静态地址_PUBLIC_ = THEME_PUBLIC_URL, / 公共静态地址_THEME_ = THEME_PUBLIC_URL, / 主题静态地址_APP_ = APP_PUBLIC_URL, / 应用静态地址_URL_ = _ROOT_./.ROOT_FILE.?app=.APP_NAME.if(C(TOKEN_ON) if(strpos(

13、$content,_TOKEN_) / 指定表单令牌隐藏域位置$replace_TOKEN_ = $this-buildFormToken();elseif(strpos($content,_NOTOKEN_)/ 标记为不需要令牌验证$replace_NOTOKEN_ = ;elseif(preg_match(/is,$content,$match) / 智能生成表单令牌隐藏域$replace$match0 = $this-buildFormToken().$match0;/ 允许用户自定义模板的字符串替换if(is_array(C(TMPL_PARSE_STRING) )$replace =

14、 array_merge($replace,C(TMPL_PARSE_STRING);$content = str_replace(array_keys($replace),array_values($replace),$content);/ 布局模板解析/$content = $this-layout($content,$charset,$contentType);/ 输出模板文件if($display)echo $content;elsereturn $content;经检验,生成乱码的原因是:服务器端开启了 debug。而开启了 debug 后,每次都会访问任何程序,都会对该程序的模板进行解析,生成“缓存模板” 。而不开启 debug,则每次会直接读取 “缓存模板” 。在本地开发程序, “缓存模板”是否重新生成,影响不大,因为此时只有开发者一人访问。在正式服务器上,有 N 多人访问。在对同一个“缓存模板”的读取与生成之间,自然容易出现错误。在开发初期,我们在某些模块的测试阶

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 职业教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号