-
-
function template($tpl = 'index',$dir = 'hello') - {
- if(!file_exists($pd = TPL_PATH.$dir.'/ '))@mkdir($pd,0777) or die("$pd directory creation failed");//such as cache/tpl/hello/
- if(!file_exists($td = TPL.$dir.'/') )@mkdir($td,0777) or die("$td directory creation failed");//such as data/tpl/hello/
$t2p = $pd.$tpl.' .php';//The php file formed after regular conversion of the template file, such as cache/tpl/hello/index.php
- $t2h = $td.$tpl.'.html';//html template file, such as data/ tpl/hello/index.html
- ?>
-
Copy code
2. When is regular conversion needed? It can be that the php file after regularization does not exist, or the html file before regularization has changed. The filemtime(string $path) function is used here, which returns the latest modification time of the file.
-
- if(!file_exists($t2p) || @filemtime($t2p) < @filemtime($t2h) )//After the template file is changed, the regular php file will be updated accordingly
- {
- template_go($t2p,$t2h);//Template conversion starts
- }
- return $t2p;//Return to the regularized php file, which can be called like this: include template('header','hello');
- }
- ?>
Copy the code
3. Start template conversion, first read from the html file, then replace it with regular expressions, and finally write it into the php file.
-
- function template_go($t2p,$t2h)
- {
- $str = @file_get_contents($t2h);//Read out
- if($str === false) exit(" The template file is missing, please check! ");
- $str = template_do($str);//Regular replacement
- @chmod($t2p,0777);
- return $str = file_put_contents($t2p, $str);// Write
- }
- ?>
Copy code
4. Regular rules, several relatively simple regular replacement syntax.
-
- function template_do($str)
- {
- $str = preg_replace('/([nr+])t+/s', '\1', $str);//Remove TAB Tabs. The modifier /s does not ignore newlines
- $str = preg_replace('/{$(.*)}/Us', '', $str);/*{$ Replace xx} with Note that the modifier /U must be added and can only match once. You can also use lazy matching */
- $str = preg_replace('/{php (.+)}/', '', $str);/*{php xxxx} replaced with < ?php xxxx ?> Note that you cannot add the modifier /s. You must consider the issue of line breaks when performing this regular rule multiple times */
- $str = preg_replace('/{template(.*)}/Us', '< ;?php include template\1; ?>', $str);
- /*{template(xx,yy)} replaced with */
- $str = preg_replace('/{include (.*)}/Us', '', $str);/*{include xx.php}replaced with */
- $str = "".$str;
- //$str = preg_replace(' /s+/', ' ', $str);//Check the source code of the webpage to see
- return $str;
- }
- ?>
-
Copy the code
Of course, this function is relatively simple, I hope it can be improved it.
|