用于PHP / Codeigniter的Printf语法分析器?

时间:2010-06-22 18:03:48

标签: php parsing codeigniter

使用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 );

?>

了解详情:http://php.net/manual/en/function.printf.php

3 个答案:

答案 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,最好将字符串存储在语言文件中。

http://codeigniter.com/user_guide/libraries/language.html