php模板引擎常见的变量理会语法

php模板引擎常见的变量理会语法,看了许多的cms它们都有本身的模板引擎,因为折腾多了所以总结下他们的正则替换语法。

是这样的进程 ,模板文件->php正则替换标签->缓存php文件->读取输出

本文主要说的是变量、数组的模板引擎语法(正则法则)。

{$var} 理会成 <?php echo $var; ?> {$var['key']} 理会成 <?php echo $var['key']; ?><?php $str = '{$var} <br />{$var["key"]}'; $str = preg_replace("/\{(\\\$[a-zA-Z0-9_\[\]\'\"\$\.]+)\}/s", "<?php echo \\1; ?>", $str); highlight_string($str); ?>

以上是最简朴的理会成变量的标签
{$var}这样写还以为贫苦?
还可以这样

{var} 理会成 <?php echo $var; ?> {var['key']} 理会成 <?php echo $var['key']; ?><?php $str = '{var} <br />{var["key"]}'; $str = preg_replace("/\{([a-zA-Z0-9_\[\]\'\"\$\.]+)\}/s", "<?php echo \\1; ?>", $str); highlight_string($str); ?>

虽然简写了会照成内容和标签斗嘴。好比 javascript、json等代码,所以改成
可变的模板标签

如:
利用非凡的字符:
利用“<[”代表 变量首标签
利用“]>”代表 变量尾标签

<[var]> 理会成 <?php echo $var; ?> <[var['key']}]> 理会成 <?php echo $var['key']; ?><?php /* @param str $str 要替换字符串内容 @param str $start 变量标签头 @param str $end 变量标签尾 @return str 理会后的字符串 */ function tags_2_var($str,$start,$end) { $slashes = '#([\{\}\*\.\?\+\$\^\[\]\(\)\|\\\/])#'; $start = preg_replace($slashes,'\\\\'.'\\1',$start); $end = preg_replace($slashes,'\\\\'.'\\1',$end); $search = '/'.$start.'([a-zA-Z0-9_\[\]\'\"\$\.]+)'.$end.'/s'; $str = preg_replace($search, '<?php echo $\\1; ?>', $str); return $str; } $start_tags = '<['; $end_tags = ']>'; $str = '<[var]> <br /><[var["key"]]>'; $str = tags_2_var($str,$start_tags,$end_tags); highlight_string($str); ?>

//输出 <?php echo $var; ?> <br /><?php echo $var["key"]; ?>

想想照旧写了三个正则了,效率都已经糟糕了,于是查了手册又写了个精简版

<?php /* @param str $str 要替换字符串内容 @param str $start 变量标签头 @param str $end 变量标签尾 @return str 理会后的字符串 */ function tags_2_var($str,$start,$end) { $start = quotemeta($start); $end = quotemeta($end); $search = '/'.$start.'([a-zA-Z0-9_\[\]\'\"\$\.]+)'.$end.'/s'; $str = preg_replace($search, '<?php echo $\\1; ?>', $str); return $str; } $start_tags = '{['; $end_tags = ']}'; $str = '{[var]} <br /><[var["key"]]>'; $str = tags_2_var($str,$start_tags,$end_tags); highlight_string($str); ?>

end。。。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/7797.html