2

たとえば、私はこれを使用します:

メールテンプレートの場合:

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);
}

これが最善の方法ですか、それともより良い方法がありますか?

4

2 に答える 2

3

あなたのアプローチは問題ありませんが、PHPの人々がよく言及することの1つは、「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');
于 2012-10-17T17:15:46.227 に答える
0

preg_replaceを使用しても問題ありませんが、動的置換を行っていないため(usernameとpasswordという2つの静的変数しかないため)、関数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が適しています。

于 2012-10-17T17:22:33.863 に答える