有谁知道更好地执行的sprintf在PHP?我正在寻找像python中的字符串格式:
print "Hello %(name)s. Your %(name)s has just been created!" % { 'name' : 'world' }
# prints::: Hello world. Your world has just been created!
Run Code Online (Sandbox Code Playgroud)
这样可以避免在不需要的情况下重复相同的变量,例如:
sprintf("Hello %s. Your %s has just been created!", 'world', 'world');
# prints::: Hello world. Your world has just been created!
Run Code Online (Sandbox Code Playgroud)
我想我自己很容易构建这个,但是如果你知道我的意思,我不想重新发明轮子......但我找不到(也许是错误的搜索关键词)任何地方的任何痕迹.
如果有人可以帮忙,我很感激.
干杯,
例如,您可以使用位置(但未命名)参数来执行此操作
printf('Hello %1$s. Your %1$s has just been created!', 'world');
Run Code Online (Sandbox Code Playgroud)
这里需要注意的一点是:必须使用单引号,否则美元符号将导致PHP尝试$s用此变量的值替换(不存在).
如果你想要命名参数,那么你必须使用正则表达式; 例如,请参阅如何使用实际值替换占位符?.
您可以使用PHP重复相同的占位符sprintf(尽管它可能看起来不太好):
$str = sprintf('%1$s %1$s', 'yay');
// str: 'yay yay'
Run Code Online (Sandbox Code Playgroud)
您可以在占位符n$之后使用%,其中n是参数位置(因此%1$s引用第一个参数(作为字符串),%2$s引用第二个参数等).如上所示,当您使用位置限制的占位符时,可以在字符串中重复它们,而不会在调用时复制参数sprintf.