Home > Backend Development > PHP Tutorial > Regular implementation code of php template function

Regular implementation code of php template function

WBOY
Release: 2016-07-25 09:03:25
Original
908 people have browsed it
  1. function template($tpl = 'index',$dir = 'hello')

  2. {
  3. if(!file_exists($pd = TPL_PATH.$dir.'/ '))@mkdir($pd,0777) or die("$pd directory creation failed");//such as cache/tpl/hello/
  4. if(!file_exists($td = TPL.$dir.'/') )@mkdir($td,0777) or die("$td directory creation failed");//such as data/tpl/hello/

  5. $t2p = $pd.$tpl.' .php';//The php file formed after regular conversion of the template file, such as cache/tpl/hello/index.php

  6. $t2h = $td.$tpl.'.html';//html template file, such as data/ tpl/hello/index.html
  7. ?>

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.

  1. if(!file_exists($t2p) || @filemtime($t2p) < @filemtime($t2h) )//After the template file is changed, the regular php file will be updated accordingly
  2. {
  3. template_go($t2p,$t2h);//Template conversion starts
  4. }
  5. return $t2p;//Return to the regularized php file, which can be called like this: include template('header','hello');
  6. }
  7. ?>
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.

  1. function template_go($t2p,$t2h)
  2. {
  3. $str = @file_get_contents($t2h);//Read out
  4. if($str === false) exit(" The template file is missing, please check! ");
  5. $str = template_do($str);//Regular replacement
  6. @chmod($t2p,0777);
  7. return $str = file_put_contents($t2p, $str);// Write
  8. }
  9. ?>
Copy code

4. Regular rules, several relatively simple regular replacement syntax.

  1. function template_do($str)
  2. {
  3. $str = preg_replace('/([nr+])t+/s', '\1', $str);//Remove TAB Tabs. The modifier /s does not ignore newlines
  4. $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 */
  5. $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 */
  6. $str = preg_replace('/{template(.*)}/Us', '< ;?php include template\1; ?>', $str);
  7. /*{template(xx,yy)} replaced with */
  8. $str = preg_replace('/{include (.*)}/Us', '', $str);/*{include xx.php}replaced with */
  9. $str = "".$str;
  10. //$str = preg_replace(' /s+/', ' ', $str);//Check the source code of the webpage to see
  11. return $str;
  12. }
  13. ?>
Copy the code

Of course, this function is relatively simple, I hope it can be improved it.



source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template