在多國語系翻譯時, 會有遇到 英文 與 中文 翻譯的字前後順序不同的問題, 此時可以使用 sprintf 來解決.
通常 sprintf 的使用方法
sprintf('1 => %s, 2 => %s', $a, $b);
要修改順序的話, 需要於 %s 中間加入 1$、2$ 等(%1$s, %2$s).
sprintf('1 => %1$s, 2 => %2$s', $a, $b);
可換成
sprintf('2 => %2$s, 1 => %1$s', $a, $b);
也可重覆使用
sprintf('2 => %2$s, 2-1 => %2$s, 1-1 => %1$s, 1 => %1$s', $a, $b);
範例
<?php
$a = '這是第一個變數';
$b = '這是第二個變數';
echo sprintf('1 => %s, 2 => %s', $a, $b) . "\n";
echo sprintf('1 => %1$s, 2 => %2$s', $a, $b) . "\n";
echo sprintf('2 => %2$s, 1 => %1$s', $a, $b) . "\n";
echo sprintf('2 => %2$s, 2-1 => %2$s, 1-1 => %1$s, 1 => %1$s', $a, $b) . "\n";
?>
可能用 mapping 的方式比較好記
http://tw.php.net/manual/en/function.vsprintf.php#89349
嗯嗯, 這倒是蠻特別的用法, 感謝提供~ Orz..