例如我用这个:
对于电子邮件模板:
email.tpl:
hello {username},
your password is: {password}
parser.php
function parse(){
$message = file_get_contents("email.tpl");
$patterns[0] = "/\{username\}/";
$patterns[1] = "/\{password\}/";
$replacements = array();
$replacements[0] = $username;
$replacements[1] = $password;
return preg_replace($patterns, $replacements, $message);
}
对于html模板: html.tpl:
<b>hello {username}</b>,
<p>your password is: {password}</p>
parser.php
function parse(){
$message = file_get_contents("html.tpl");
$patterns[0] = "/\{username\}/";
$patterns[1] = "/\{password\}/";
$replacements = array();
$replacements[0] = $username;
$replacements[1] = $password;
return preg_replace($patterns, $replacements, $message);
}
这是最好的方式还是有更好的方式?
答案 0 :(得分:3)
你的方法很好,但你会发现PHP人经常提到的一件事是“PHP已经是模板引擎了”。
你可以这样做:
<强> email.tpl 强>
<?php
hello $username,
your password is: $password
?>
<强> parser.php 强>
<?php
function parse($username, $password) {
ob_start();
require 'email.tpl';
return ob_get_clean();
}
?>
调用解析函数
$emailBody = parse('Someuser', 'Somepass');
答案 1 :(得分:0)
使用preg_replace是可以的,但由于你没有进行动态替换(你只有2个名为username和password的静态变量),你可以使用函数strtr。
strtr
执行简单的字符串替换
preg_replace
执行复杂的正则表达式字符串搜索和替换
strtr会快得多(如果你的html很重)..你可以像这样使用它:
function parse(){
$message = file_get_contents("html.tpl");
return strtr ( $message , array(
"{username}" => $username,
"{password}" => $password,
));
}
如果你想要一个动态系统(自动替换0 ... n变量),preg_replace是不错的选择