简单复杂的模板替换函数-新手
作者: 郑晓 分类: PHP 发布于: 2012-03-23 09:37 浏览:5,149 评论(2)
花了大半天的时间写的几个正则。。。这个正则表达式以前基本没用过,不太熟练,花了大半天才写了这么几行。。。而且感觉写的复杂了。。
<?php
/*
@author:郑晓
@模板替换函数
*/
function tpl($content) {
//替换变量{tpl:$var}
$content = preg_replace("/{tpl:(\\$([a-zA-Z_]+))}/",'<?php echo \\1 ?>',$content);
//替换函数 函数名(带双引号的参数 或 带单引号的参数 或 日期格式参数 或 变量 或数组)
$content = preg_replace("/{tpl:\s?(([a-z_]+)\(("[a-zA-Z_-]+",?|'[a-zA-Z_-]+',?|"[a-zA-Z\s\:-]+",?|(\\$[a-zA-Z_]+)(\[([a-zA-Z_-]+)\])?,?)*\))}/",'<?php \\1 ;?>',$content);
//替换loop循环开始
$content = preg_replace("/{tpl:loop\s(\\$[a-zA-Z_]+)\s(\\$[a-zA-Z_]+)\s(\\$[a-zA-Z_]+)}/",'<?php foreach(\\1 as \\2=>\\3) {?>',$content);
//替换/loop循环结束
$content = preg_replace("/{tpl:\/loop}/",'<?php }?>',$content);
//替换循环数组变量
$content = preg_replace("/{tpl:(\\$[a-zA-Z_]+)(\[([a-zA-Z_-]+)\])}/",'<?php \\1\\2 ;?>',$content);
//替换if
$content = preg_replace("/{tpl:(if\s(\\$[a-zA-Z_]+)(\[([a-zA-Z_-]+)\])?([=<>!]{1,2}("[0-9a-zA-Z_-]+"|'[0-9a-zA-Z_-]+'|[0-9a-zA-Z]+|(\\$[a-zA-Z_]+)(\[([a-zA-Z_-]+)\])?)))}/",'<?php \\1 { ?>',$content);
//替换else
$content = preg_replace("/{tpl:else}/",'<?php }else{ ?>',$content);
//替换/if
$content = preg_replace("/{tpl:\/if}/",'<?php }?>',$content);
return $content;
}
?>
/*
@author:郑晓
@模板替换函数
*/
function tpl($content) {
//替换变量{tpl:$var}
$content = preg_replace("/{tpl:(\\$([a-zA-Z_]+))}/",'<?php echo \\1 ?>',$content);
//替换函数 函数名(带双引号的参数 或 带单引号的参数 或 日期格式参数 或 变量 或数组)
$content = preg_replace("/{tpl:\s?(([a-z_]+)\(("[a-zA-Z_-]+",?|'[a-zA-Z_-]+',?|"[a-zA-Z\s\:-]+",?|(\\$[a-zA-Z_]+)(\[([a-zA-Z_-]+)\])?,?)*\))}/",'<?php \\1 ;?>',$content);
//替换loop循环开始
$content = preg_replace("/{tpl:loop\s(\\$[a-zA-Z_]+)\s(\\$[a-zA-Z_]+)\s(\\$[a-zA-Z_]+)}/",'<?php foreach(\\1 as \\2=>\\3) {?>',$content);
//替换/loop循环结束
$content = preg_replace("/{tpl:\/loop}/",'<?php }?>',$content);
//替换循环数组变量
$content = preg_replace("/{tpl:(\\$[a-zA-Z_]+)(\[([a-zA-Z_-]+)\])}/",'<?php \\1\\2 ;?>',$content);
//替换if
$content = preg_replace("/{tpl:(if\s(\\$[a-zA-Z_]+)(\[([a-zA-Z_-]+)\])?([=<>!]{1,2}("[0-9a-zA-Z_-]+"|'[0-9a-zA-Z_-]+'|[0-9a-zA-Z]+|(\\$[a-zA-Z_]+)(\[([a-zA-Z_-]+)\])?)))}/",'<?php \\1 { ?>',$content);
//替换else
$content = preg_replace("/{tpl:else}/",'<?php }else{ ?>',$content);
//替换/if
$content = preg_replace("/{tpl:\/if}/",'<?php }?>',$content);
return $content;
}
?>
本文采用知识共享署名-非商业性使用 3.0 中国大陆许可协议进行许可,转载时请注明出处及相应链接。
本文永久链接: https://www.zh30.com/the-simple-and-complex-the-template-the-replace-function-novice.html
简单复杂的模板替换函数-新手:目前有2 条留言
很久就想学,没开始。惭愧
哈哈~我也是刚学。。就这点儿东西还弄了大半天 😀