用Smarty替换来自DB的字符串

时间:2012-01-29 22:34:17

标签: php smarty

我正在使用Smarty作为我的模板引擎。

但我有一个让我发疯的问题,所以如果你有解决方案,请提供一个具体的例子。

我在mySQL数据库中保存了一些HTML。当我得到它时,我想用正确的变量值替换{$foo}

我正在尝试这样做,因为我有一个多语言网站。因此,我们假设这是来自DB的变量$content中的代码:

$content = <div id="help">{$lang['helpmeout'}</div>
            <div id="hello">{$lang['hello']}</div>

现在假设上面的内容来自数据库并且存储在$ content变量中,我怎么说聪明才能捕获括号{}中的变量并将它们视为普通的PHP代码?我真的无法让它发挥作用。

似乎没有人为此提供有效的解决方案。

请帮忙

2 个答案:

答案 0 :(得分:0)

我不知道Smarty是如何运作的。考虑这个片段来解析php变量:

$lang = array('helpmeout' => 'helpMeOut', 'hello' => 'hi');
$content = '<div id="help">{$lang[\'helpmeout\']}</div>
<div id="hello">{$lang[\'hello\']}</div>';
eval('$c = "'.str_replace('"', '\"', $content).'";');
echo $c;

这里的重点是评估$c = "$content"(scaping“)将解析php变量。

我希望有所帮助。

答案 1 :(得分:0)

Smarty 3知道string resource。如果您需要为此禁用某些Smarty功能,请查看Smarty Security