AI编程助手
AI免费问答

PHP模板二(仿DEDE)

  2016-06-06 20:00   1512浏览 原创

今天看了下正则表达式,忽然觉得可以把我现在手上的企业建站系统改一下。不过改来改去觉得还是仿dede的方式好一点。 /({t:*[^{]*\/}|{t:*[^}]*}([^{]|(?R))*{\/t:.*?})/i 但是对我于这个系统来说,那就简单得多,所以参照这个我做了以下的正则表达式 private

今天看了下正则表达式,忽然觉得可以把我现在手上的企业建站系统改一下。不过改来改去觉得还是仿dede的方式好一点。

/({t:*[^{]*\/}|{t:*[^}]*}([^{]|(?R))*{\/t:.*?})/i
但是对我于这个系统来说,那就简单得多,所以参照这个我做了以下的正则表达式

 

private $preg_string = "/(<m:*[^<]*>|<\/m:*[^<]*>)/si";


 


$tag_arr数组的格式如下


然后用PHP的str_replace方式替换$tag_arr['str']

以下是源码

stemplate.class.php


index.php
<?php

require './stemplate.class.php';

$template = new stemplate();

$template->display('index.htm');

index.htm
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gbk" />
<title>模板</title>
</head>

<body>
<b>正常输出</b><br/>
<?php echo '正常的PHP输出'; ?><br/>
<b>foreach循环</b><br/>
<?php $temp_arr = array('aa' , 'bbb'); ?>
<m:foreach from='$temp_arr' value='cc'>
	<td><m:field name='cc' /></td>
</m:foreach>
</body>
</html>

m.class.php
<?php
class m{
	public function _foreach($property=null){
		$from = $property['from'];
		$value = $property['value'];
		$content = "<?php foreach($from as \$$value){ ?>";
		return $content;
	}
	
	public function _field($property=null){
		return "<?php echo \${$property['name']}; ?>";
	}
}


php免费学习视频:立即学习
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。