在创建自动电子邮件时,电子邮件的某些部分需要用存储的数据替换。
例如。亲爱%first_name% %surname%
的,感谢您参加%place_name%
。
这可以通过对它们中的每一个进行字符串替换来完成,但必须有更快的方法。
假设变量名称与我们想要的系统名称相同,例如。%first_name%
应该换成$user['first_name']
等……
在创建自动电子邮件时,电子邮件的某些部分需要用存储的数据替换。
例如。亲爱%first_name% %surname%
的,感谢您参加%place_name%
。
这可以通过对它们中的每一个进行字符串替换来完成,但必须有更快的方法。
假设变量名称与我们想要的系统名称相同,例如。%first_name%
应该换成$user['first_name']
等……
您可以利用数组值preg_replace_callback
替换 's 之间的键:%
$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);
一种选择:
$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
选项或其他提取方法之一。
或者,更好的是,不要重新发明轮子。只需使用Smarty或mustache.php 即可。
另请参阅此问题:带变量的 PHP 模板类?