星期二, 八月 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";
?>

延伸閱讀

相關標籤

this is comment icon [回覆]

可能用 mapping 的方式比較好記

http://tw.php.net/manual/en/function.vsprintf.php#89349

Comment by atomer (08/13/2009 01:55)

this is comment icon 回 atomer [回覆]

嗯嗯, 這倒是蠻特別的用法, 感謝提供~ Orz..

Comment by Tsung (08/13/2009 09:39)
Add this page to del.icio.us

發表迴響

標題

內容 (限制 1000 字)

暱稱

電子郵件

個人網頁


 authimage


PS: 若無法留言, 請先確認是否有打開 JavaScript, 造成您的困擾, 實在萬分對不起 Orz...(如果無法留言, 勞煩可以發信給我好嗎? 謝謝.)
PS2: 若您的留言被誤判, 我都會再自行看過, 不需要一直重覆張貼~