首页 > CMS > PhpCMS > 正文

PHPCMS2008tag的解析方法

2024-09-10 07:16:04
字体:
来源:转载
供稿:网友
  1. <?php   
  2. function cachehtml(){   
  3.     $head['title'] = '网站地图 - '.$PHPCMS['sitename'];   
  4.     $head['keywords'] = $PHPCMS['sitename'];   
  5.     ob_start();   
  6.     include template('phpcms''sitemap');   
  7.     $file = PHPCMS_ROOT.'sitemap.html';   
  8.     createhtml($file);   
  9. }   
  10.    
  11. function template($module = 'phpcms'$template = 'index'$istag = 0)   
  12. {   
  13.     $compiledtplfile = TPL_CACHEPATH.$module.'_'.$template.'.tpl.php';   
  14.     if(TPL_REFRESH &&    
  15.         (!file_exists($compiledtplfile) ||    
  16.         @filemtime(TPL_ROOT.TPL_NAME.'/'.$module.'/'.$template.'.html') > @filemtime($compiledtplfile) ||    
  17.         ))   
  18.     {   
  19.         template_compile($module$template$istag);   
  20.     }   
  21.     return $compiledtplfile;   
  22. }   
  23. function template_compile($module$template$istag = 0)   
  24. {   
  25.     $tplfile = TPL_ROOT.TPL_NAME.'/'.$module.'/'.$template.'.html';   
  26.     $content = @file_get_contents($tplfile);   
  27.     if($content === false) showmessage("$tplfile is not exists!");   
  28.     $compiledtplfile = TPL_CACHEPATH.$module.'_'.$template.'.tpl.php';   
  29.     $content = ($istag || substr($template, 0, 4) == 'tag_') ? '<?php function _tag_'.$module.'_'.$template.'($data$number$rows$count$page$pages$setting){ global $PHPCMS,$MODULE,$M,$CATEGORY,$TYPE,$AREA,$GROUP,$MODEL,$templateid,<pre class="php" name="code">{1}</pre><br>   
  30. userid,<pre class="php" name="code">{1}</pre><br>   
  31. username;@extract($setting);?>'.template_parse($content, 1).'<?php } ?>' : template_parse($content);$strlen = file_put_contents($compiledtplfile$content);@chmod($compiledtplfile, 0777);return $strlen;}function template_parse($str$istag = 0){$str = preg_replace("/([/n/r]+)/t+/s","//1",$str);$str   
  32.  = preg_replace("//</!/-/-/{(.+?)/}/-/-/>/s""{//1}",$str);$str = preg_replace("//{template/s+(.+)/}/","<?php include template(//1); ?>",$str);$str = preg_replace("//{include/s+(.+)/}/","<?php include //1; ?>",$str);$str = preg_replace("//{php/s+(.+)/}/","<?php   
  33.  //1?>",$str);$str = preg_replace("//{if/s+(.+?)/}/","<?php if(//1) { ?>",$str);$str = preg_replace("//{else/}/","<?php } else { ?>",$str);$str = preg_replace("//{elseif/s+(.+?)/}/","<?php } elseif (//1) { ?>",$str);$str = preg_replace("//{//if/}/","<?php }  //开源软件:Vevb.com 
  34.  ?>",$str);$str = preg_replace("//{loop/s+(/S+)/s+(/S+)/}/","<?php if(is_array(//1)) foreach(//1 AS //2) { ?>",$str);$str = preg_replace("//{loop/s+(/S+)/s+(/S+)/s+(/S+)/}/","<?php if(is_array(//1)) foreach(//1 AS //2 => //3) { ?>",$str);$str = preg_replace("//{//loop/}/","<?php   
  35.  } ?>",$str);$str = preg_replace("//{//get/}/","<?php } unset(/$DATA); ?>",$str);$str = preg_replace("//{tag_([^}]+)/}/e", "get_tag('//1')", $str);$str = preg_replace("//{get/s+([^}]+)/}/e", "get_parse('//1')", $str);$str = preg_replace("//{([a-zA-Z_/x7f-/xff][a-zA-Z0-9_/x7f-/xff:]*/(([^{}]*)/))/}/","<?php   
  36.  echo //1;?>",$str);$str = preg_replace("//{//$([a-zA-Z_/x7f-/xff][a-zA-Z0-9_/x7f-/xff:]*/(([^{}]*)/))/}/","<?php echo //1;?>",$str);$str = preg_replace("//{(//$[a-zA-Z_/x7f-/xff][a-zA-Z0-9_/x7f-/xff]*)/}/","<?php echo //1;?>",$str);$str = preg_replace("//{(//$[a-zA-Z0-9_/[/]/'/"/$/x7f-/xff]+)/}/es",   
  37.  "addquote('<?php echo //1;?>')",$str);$str = preg_replace("//{([A-Z_/x7f-/xff][A-Z0-9_/x7f-/xff]*)/}/s""<?php echo //1;?>",$str);if(!$istag$str = "<?php defined('IN_PHPCMS') or exit('Access Denied'); ?>".$str;return $str;}function createhtml($file){$data   
  38.  = ob_get_contents();ob_clean();dir_create(dirname($file));$strlen = file_put_contents($file$data);@chmod($file,0777);return $strlen;}?>   
  39. <pre></pre>   
  40. <br>

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表