星期二, 八月 11, 2009
PHP 使用 sprintf 調換變數順序
在多國語系翻譯時, 會有遇到 英文 與 中文 翻譯的字前後順序不同的問題, 此時可以使用 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";
?>
延伸閱讀
- 我在 COSCUP 2010 演講的投影片 - 多國語系製作
- 抓檔 和 更改檔名
- OSDC (Open Source Developers' Conference) 2010 筆記整理
- 查看 MySQL 各 Table 的使用空間
- PHP ip2long() 回傳值為負數 的 解法
相關標籤
可能用 mapping 的方式比較好記
http://tw.php.net/manual/en/function.vsprintf.php#89349
Comment by
atomer
(08/13/2009 01:55)
發表迴響
PS: 若無法留言, 請先確認是否有打開 JavaScript, 造成您的困擾, 實在萬分對不起 Orz...(如果無法留言, 勞煩可以發信給我好嗎? 謝謝.)
PS2: 若您的留言被誤判, 我都會再自行看過, 不需要一直重覆張貼~
PS2: 若您的留言被誤判, 我都會再自行看過, 不需要一直重覆張貼~




