我正在寻找一种为 sprintf
或 printf
使用命名参数的方法。
示例:
sprintf(
'Last time logged in was %hours hours,
%minutes minutes, %seconds seconds ago'
,$hours,$minutes, $seconds
);
或通过 vsprintf
和关联数组。
我在这里找到了一些编码示例
function sprintfn ($format, array $args = array())
http://php.net/manual/de/function.sprintf.php
这里
function vnsprintf( $format, array $data)
http://php.net/manual/de/function.vsprintf.php
人们编写自己的解决方案。
但我的问题是,是否有一个标准的 PHP 解决方案可以实现此目的,或者是否有其他方法(也许使用 PEAR 提供的简单 PHP 模板),我可以通过坚持使用标准 PHP 来实现此目的?
感谢您的帮助。
最佳答案
迟到了,但你可以简单地使用 strtr “翻译字符或替换子字符串”
<?php
$hours = 2;
$minutes = 24;
$seconds = 35;
// Option 1: Replacing %variable
echo strtr(
'Last time logged in was %hours hours, %minutes minutes, %seconds seconds ago',
[
'%hours' => $hours,
'%minutes' => $minutes,
'%seconds' => $seconds
]
);
// Option 2: Alternative replacing {variable}
echo strtr(
'Last time logged in was {hours} hours, {minutes} minutes, {seconds} seconds ago',
[
'{hours}' => $hours,
'{minutes}' => $minutes,
'{seconds}' => $seconds
]
);
// Option 3: Using an array with variables:
$data = [
'{hours}' => 2,
'{minutes}' => 24,
'{seconds}' => 35,
];
echo strtr('Last time logged in was {hours} hours, {minutes} minutes, {seconds} seconds ago', $data);
// More options: Of course you can replace any string....
输出以下内容:
Last time logged in was 2 hours, 24 minutes, 35 seconds ago
关于php - 带有命名参数的 vsprintf 或 sprintf,或者 PHP 中的简单模板解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5701985/