原理
php的模板替换功能很强大,不仅仅可以用于网页,实际上可以用于任何文本文件的模板替换。因此对于一些代码的自动生成需求来说,php的模板替换是一个很强大的功能。php 执行一个文件时,在<?php ...?>之外的内容会原封不动地输出,<?php ...?>内部的内容会动态执行。再配合操作系统的重定向命令,可以很方便地将替换后的结果写入文件。
示例
下面用一个具体的例子来加以说明。假设有如下一个文本文件:
张三你好:
下面这几天该上课:
周二要上数学课
周三要上语文课
周五要上体育课
其它时侯都可以睡懒觉!
可以发现 上面文档中的课程安排是需要重复生成的,如果用模板替换的方式来自动生成,就会很方便。
为此我们准备一个模板文件如下:
template.txt
这是一个模板替换的例子
<?=$person?>你好:
下面这几天该上课:
<?php foreach ($weekTask as $key =>$value) { ?>
<?=$key?>要上<?=$value?>课
<?php } ?>
其它时侯都可以睡懒觉!
进行模板替换操作的php加载文件
templateWorker.php
<?php
//用于替换的模板变量
$person= '张三';
$weekTask =['周二'=>'数学','周三'=>'语文','周五'=>'体育'];
//加载模板文件,输出内容就是要生成的结果
require_once "template.txt";
?>
运行加载文件,重定向生成结果文件的脚本
make.bat
php templateWorker.php > output.txt
这个脚本的功能很明确,就是运行加载文件templateWorker.php,将其从标准输出的内容重定向到output.txt。
将以上三个文件放在同一个目录下,双击运行make.bat,就会得到结果文件output.txt。
补充说明一下:要实现这个效果,必须保证在命令行中可以运行php.exe .因此有必要将php.exe所在的目录加入到操作系统的环境变量path中去。如果是linux或mac os。php往往是预先就装好的,随时可以运行,就少了这一步的麻烦。
output.txt
这是一个模板替换的例子
张三你好:
下面这几天该上课:
周二要上数学课
周三要上语文课
周五要上体育课
其它时侯都可以睡懒觉!
这样就达到了通过模板替换生成结果文件的效果。如果对php编程中的网页替换比较熟悉的朋友就会发现在替换语法上是完全一模一样的。只是有的人会将php局限在网页开发上,但实际上php也是一个很强大的命令行工具。在批处理,自动代码生成方面都有很广的应用。