从DB转换文本

时间:2013-06-22 13:36:08

标签: php

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

<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>

我想用相对值替换{}(即{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;
        }
    }

3 个答案:

答案 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;
    }
}