相关疑难解决方法(0)

何时使用strtr vs str_replace?

我很难理解什么时候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还是其他有什么好处吗?任何人不足以达到预期结果的情况?

php string strtr str-replace

81
推荐指数
3
解决办法
3万
查看次数

带有命名参数的vsprintf或sprintf,或PHP中的简单模板解析

我正在寻找一种方法来为或使用命名参数.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实现这一点?

谢谢你的帮助.

php string.format printf templates named-parameters

12
推荐指数
5
解决办法
2万
查看次数