2

自動電子メールを作成する際には、電子メールの特定の部分を保存されたデータに置き換える必要があります。

例えば。親愛なる%first_name% %surname%、ご参加いただきありがとうござい%place_name%ます。

これは、それぞれの文字列置換を使用して実行できますが、より高速な方法が必要です。

変数名がシステムに必要なものと同じであると仮定します。%first_name%などに置き換える必要があり$user['first_name']ます...。

4

2 に答える 2

2

1つのオプション:

$vars = array(
  'firstname' = 'Bob',
  'surname' = 'Dole',
  'place' = 'Las Vegas',
  // ...
);
extract($vars);
include('my_template.phtml');

そしてmy_template.phtmlで:

<?php
echo <<<EOF
    Dear $firstname $surname,<br>
    Thank you for attending the Viagra and Plantains Expo in $place.
EOF;
?>

の使用中に名前の衝突が心配な場合はextract()、いつでもこのEXTR_PREFIX_ALLオプションまたは他の抽出方法の1つを使用できます。

または、さらに良いことに、車輪の再発明をしないでください。Smartyまたはmustache.phpを使用するだけです。

この質問も参照してください:変数を持つPHPテンプレートクラス?

于 2012-07-30T16:10:49.973 に答える
2

の間のキーを配列値preg_replace_callbackに置き換えるために利用できます。%

$fields = array('first_name' => 'Tim', 'place_name' => 'Canada');

$string = preg_replace_callback('/%(.+?)%/', function($arr) use($fields)
{
    $key = $arr[1];
    return array_key_exists($key, $fields) ? $fields[$key] : $arr[0];
}, $string);
于 2012-07-30T15:38:40.050 に答える