php - PHP/Codeigniter 的 Printf 语法解析器?

标签 php parsing codeigniter

使用 PHP 和/或 Codeigniter,我想创建一些字符串模板以存储在数据库中,以便稍后可以使用它们打印出自定义语句。

例如,我想将此 "hello %s! you are the %d visitor." 存储在我的数据库中,以便稍后我可以插入姓名和号码来打印此消息“你好鲍勃!你是第 100 位访客”

是否有任何可用的函数可以轻松地做到这一点,或者我是否必须使用 preg_match/preg_replace 编写自己的脚本?


这个有效:

<?

$test = 'hello %s';
$name = 'bob';
printf( $test, $name );

?>

阅读更多:http://php.net/manual/en/function.printf.php

最佳答案

你可以使用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!"

关于php - PHP/Codeigniter 的 Printf 语法解析器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3095774/

相关文章:

php - App Engine 标准 : The/srv/bootstrap/cache directory must be present and writable 上的 Laravel

php - 如何在将值插入另一个表后将值插入另一个表

c - 从 Char* 数组中提取数字(C 字符串)

php - 无法将数据插入多个数据库 Codeigniter(MongoDB 和 MySQL)

javascript - 如何将其应用到 jquerymobile 中的所有页面

php - 如何同时执行这两个查询?

php - 当发生 "don' t"的事情时,有什么方法可以通知您?

c++ - spirit x3 如何将 vector 添加到 AST

python - 使用 xml.etree.ElementTree 搜索 XML 元素树的属性

javascript - 如何在javascript中获取基本url