0

我的数据库中有一个这样的电子邮件模板:

<p style='font-size: 14px; line-height: 14px;'>
    Gentile {name} la password del tuo account &egrave; 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>

我想用相对值替换{}(ie ) 中包含的所有字符串。{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;
        }
    }
4

3 回答 3

2

试试这个:

$text = str_replace($key, $value, $text);
return $text;

您将结果存储在str_replacein $str,因此您只返回最后一个元素

于 2013-06-22T13:37:47.990 回答
0

我做了这个功能

public function MsgHTML($message, $data=array())
{
    if (!empty($data)) {
        foreach ($data as $key => $val) {
            $message = str_replace('{'.$key.'}', $val, $message);
        }
    }

    return message;
}

试试这个 ;)

于 2013-06-22T13:42:00.687 回答
0

您不需要循环,因为str_replace可以使用数组:

function transform($text, $replace) {
    if (is_array($replace)) {
        return str_replace(arrar_keys($replace), $replace, $text);
    } else {
        return null;
    }
}
于 2013-06-22T13:43:29.260 回答