当前位置:首页 > CMS教程 > phpcms > 列表

PHPCMS2008tag的解析方法

发布:smiling 来源: PHP粉丝网  添加日期:2014-10-24 16:44:54 浏览: 评论:0 
  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 }  //开源软件:phpfensi.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>

Tags: PHPCMS解析方法 tag解析方法

分享到: