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";
?>

作者: Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.

在〈PHP 使用 sprintf 調換變數順序〉中有 2 則留言

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料