我很难理解什么时候strtr会更好,str_replace反之亦然.看起来使用任一函数都可以获得完全相同的结果,尽管替换子串的顺序是相反的.例如:
echo strtr('test string', 'st', 'XY')."\n";
echo strtr('test string', array( 's' => 'X', 't' => 'Y', 'st' => 'Z' ))."\n";
echo str_replace(array('s', 't', 'st'), array('X', 'Y', 'Z'), 'test string')."\n";
echo str_replace(array('st', 't', 's'), array('Z', 'Y', 'X'), 'test string');
Run Code Online (Sandbox Code Playgroud)
这输出
YeXY XYring
YeZ Zring
YeXY XYring
YeZ Zring
Run Code Online (Sandbox Code Playgroud)
除了语法之外,使用one还是其他有什么好处吗?任何人不足以达到预期结果的情况?
我正在寻找一种方法来为或使用命名参数.sprintfprintf
例:
sprintf(
'Last time logged in was %hours hours,
%minutes minutes, %seconds seconds ago'
,$hours,$minutes, $seconds
);
Run Code Online (Sandbox Code Playgroud)
或通过vsprintf和一个关联数组.
我在这里找到了一些编码示例
function sprintfn ($format, array $args = array())
Run Code Online (Sandbox Code Playgroud)
http://php.net/manual/de/function.sprintf.php
和这里
function vnsprintf( $format, array $data)
Run Code Online (Sandbox Code Playgroud)
http://php.net/manual/de/function.vsprintf.php
人们写自己的解决方案.
但我的问题是,是否有可能有一个标准的PHP解决方案来实现这一点,还是有另一种方式,也许是由PEAR提供的简单的PHP模板,我可以通过坚持标准的PHP实现这一点?
谢谢你的帮助.