由於PHP並不真的要在Python str.format
正確的選擇,我決定實現我最簡單的自己這是大多數Python的一個基本functionnalitites的。
function format($msg, $vars)
{
$vars = (array)$vars;
$msg = preg_replace_callback('#\{\}#', function($r){
static $i = 0;
return '{'.($i++).'}';
}, $msg);
return str_replace(
array_map(function($k) {
return '{'.$k.'}';
}, array_keys($vars)),
array_values($vars),
$msg
);
}
# Samples:
# Hello foo and bar
echo format('Hello {} and {}.', array('foo', 'bar'));
# Hello Mom
echo format('Hello {}', 'Mom');
# Hello foo, bar and foo
echo format('Hello {}, {1} and {0}', array('foo', 'bar'));
# I'm not a fool nor a bar
echo format('I\'m not a {foo} nor a {}', array('foo' => 'fool', 'bar'));
- 的順序並不重要,
- 如果你希望它是簡單的增加(相匹配的第一
{}
將轉變爲{0}
,等等)可以省略姓名/號碼,
- 你可以命名你的參數,
- 你可以混合其他三個點。
您是否在尋找這個http://php.net/manual/en/function.sprintf.php –
** seealso:**:https://stackoverflow.com/questions/5701985/vsprintf-or -sprintf -with-named-arguments – dreftymac