使用PHP和/或Codeigniter,我想创建一些字符串模板存储在数据库中,以便以后可以用它们打印出自定义语句。
例如,我想将此"hello %s! you are the %d visitor."
存储在我的数据库中,以便稍后我可以插入一个名称和数字来打印此消息"hello bob! you are the 100 visitor"
。
是否有任何可用的功能可以轻松完成此操作,还是必须使用preg_match / preg_replace编写自己的脚本?
这有效:
<?
$test = 'hello %s';
$name = 'bob';
printf( $test, $name );
?>
答案 0 :(得分:4)
您可以使用sprintf
,但您始终需要知道向模板提供参数的确切顺序。
// this works only on php 5.3 and up
function sformat($template, array $params)
{
return str_replace(
array_map(
function($key)
{
return '{'.$key.'}';
}, array_keys($params)),
array_values($params), $template);
}
// or in the case of a php version < 5.3
function sformat($template, array $params)
{
$output = $template;
foreach($params as $key => $value)
{
$output = str_replace('{'.$key.'}', $value, $output);
}
return $output;
}
echo sformat('Hello, {what}!', array('what' => 'World'));
// outputs: "Hello, World!"
答案 1 :(得分:3)
您可以使用任何* printf()函数系列
答案 2 :(得分:0)
如果您使用CI,最好将字符串存储在语言文件中。