我的数据库中有一个这样的电子邮件模板:
<p style='font-size: 14px; line-height: 14px;'>
Gentile {name} la password del tuo account è stata modificata correttamente.<br/>
Di seguito i tuoi nuovi dati di accesso:
</p>
<table>
<tr>
<td style='width: 70px'>Username: </td>
<td style='width: 70px'>{$email}</td>
</tr>
<tr>
<td style='width: 70px'>Password: </td>
<td style='width: 70px'>{password}</td>
</td>
</table>
<p style='font-size: 14px; line-height: 14px;'>
A presto<br/>
Lo staff di {APP_NAME}
</p>
我想用相对值替换{}
(即{name}
)中包含的所有字符串。
我创建了一个简单的函数,它将采用array
并且应该转换字符串。但由于某些原因,它不起作用..
return transform($body, array('{name}' => 'Diego', 'APP_NAME' => 'Blahbla', '{username}' => 'email@email'));
function transform($text, $replace) {
if (is_array($replace)) {
foreach ($replace as $key => $value)
$str = str_replace($key, $value, $text);
return $str;
} else {
return null;
}
}
答案 0 :(得分:2)
试试这个:
$text = str_replace($key, $value, $text);
return $text;
您将str_replace
的结果存储在$str
中,因此您只返回最后一个元素
答案 1 :(得分:0)
我已经完成了这个功能
public function MsgHTML($message, $data=array())
{
if (!empty($data)) {
foreach ($data as $key => $val) {
$message = str_replace('{'.$key.'}', $val, $message);
}
}
return message;
}
试试这个;)
答案 2 :(得分:0)
您不需要循环,因为str_replace
可以使用数组:
function transform($text, $replace) {
if (is_array($replace)) {
return str_replace(arrar_keys($replace), $replace, $text);
} else {
return null;
}
}