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

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.
本篇發表於 Programming。將永久鏈結加入書籤。

PHP 使用 sprintf 調換變數順序 有 2 則回應

  1. Tsung 說道:

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

發表迴響