現在の位置: ホーム> 最新記事一覧> PHPのMoney_Format関数とSetLocaleを正しく使用して、ローカライズされた通貨形式を処理する方法は?

PHPのMoney_Format関数とSetLocaleを正しく使用して、ローカライズされた通貨形式を処理する方法は?

gitbox 2025-09-16
<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// この記事は、デモコードの例のみを使用しています,テキストの内容とは何の関係もありません。</span></span><span>
</span><span><span class="hljs-comment">// 使用するときに実際の状況に従って調整してください。</span></span><span>

</span><span><span class="hljs-title function_ invoke__">setlocale</span></span><span>(LC_MONETARY, </span><span><span class="hljs-string">'en_US.UTF-8'</span></span><span>);
</span><span><span class="hljs-variable">$amount</span></span><span> = </span><span><span class="hljs-number">1234567.89</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">money_format</span></span><span>(</span><span><span class="hljs-string">'%i'</span></span><span>, </span><span><span class="hljs-variable">$amount</span></span><span>);

</span><span><span class="hljs-meta">?&gt;</span></span><span>

---

</span><span><span class="hljs-comment"># 正しく使用する方法PHPのmoney_format関数とsetlocaleローカライズされた通貨形式を処理するために結合されています?</span></span><span>

在涉及金融或电商类应用の开发中,货币格式化是一个常见の需求。PHP 中の `money_format` 機能的調整 `setlocale` 可以帮助开发者根据不同の地区设置,输出符合本地习惯の货币字符串。しかし,多くの初心者は、これら2つの機能を使用するときに混乱に遭遇する傾向があります。この記事では、使用方法と予防策を詳細に紹介します。

</span><span><span class="hljs-comment">## 1. 基本原則</span></span><span>

- **`setlocale`**  
  用来设定程序の区域信息(Locale),影響力の影響、日付、通貨およびその他のフォーマットルール。  
  常见の设置方式为:
  ```php
  </span><span><span class="hljs-title function_ invoke__">setlocale</span></span><span>(LC_MONETARY, </span><span><span class="hljs-string">'en_US.UTF-8'</span></span><span>);
</span></span>

上記のコードは、米国英語(UTF-8エンコーディング)に通貨形式を設定することを意味します。

  • Money_format
    現在のロケールに従って通貨価値をフォーマットするために使用されます。
    例えば:

     <span><span><span class="hljs-variable">$amount</span></span><span> = </span><span><span class="hljs-number">1234.56</span></span><span>;
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">money_format</span></span><span>(</span><span><span class="hljs-string">'%i'</span></span><span>, </span><span><span class="hljs-variable">$amount</span></span><span>);
    </span></span>

    米国のロケールの下では、出力: 1234.56 USD

2。一般的なフォーマットパラメーター

Money_Formatの最初のパラメーターは、フォーマット制御文字列です。一般的なものは次のとおりです。

  • %I :地域に従って、ローカライズされた国際形式通貨(通貨記号を含む)出力。

  • %n :地域に応じた出力ローカライズされた国家形式通貨。

  • %!n :通貨記号は禁止されており、数値部分のみが出力されます。

例:

 <span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">money_format</span></span><span>(</span><span><span class="hljs-string">'%n'</span></span><span>, </span><span><span class="hljs-number">1234.56</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">money_format</span></span><span>(</span><span><span class="hljs-string">'%i'</span></span><span>, </span><span><span class="hljs-number">1234.56</span></span><span>);
</span></span>

3。クロスプラットフォームの互換性

注意すべきは、次のとおりです。

  • Money_FormatはWindowsプラットフォームでは利用できません。主にUnix様システム(Linux、MacOS)で効果的です。

  • PHPのWindows以降のバージョンでは、 Numberformatter (INTL拡張子)を使用して、クロスプラットフォーム通貨のフォーマットを実現することをお勧めします。

例えば:

 <span><span><span class="hljs-variable">$fmt</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title class_">NumberFormatter</span></span><span>(</span><span><span class="hljs-string">'en_US'</span></span><span>, </span><span><span class="hljs-title class_">NumberFormatter</span></span><span>::</span><span><span class="hljs-variable constant_">CURRENCY</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$fmt</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">formatCurrency</span></span><span>(</span><span><span class="hljs-number">1234.56</span></span><span>, </span><span><span class="hljs-string">'USD'</span></span><span>);
</span></span>

4。実用的なアプリケーションシナリオ

国際的なeコマースシステムを開発しており、ユーザーの国に応じてさまざまな通貨表示方法をエクスポートする必要があるとします。これを行うことができます。

 <span><span><span class="hljs-variable">$locale</span></span><span> = </span><span><span class="hljs-string">'fr_FR.UTF-8'</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">setlocale</span></span><span>(LC_MONETARY, </span><span><span class="hljs-variable">$locale</span></span><span>);

</span><span><span class="hljs-variable">$amount</span></span><span> = </span><span><span class="hljs-number">987654.32</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">money_format</span></span><span>(</span><span><span class="hljs-string">'%i'</span></span><span>, </span><span><span class="hljs-variable">$amount</span></span><span>);
</span></span>

出力は次のとおりです。987654,32ユーロ(フランスのカスタム)。

5。概要とベストプラクティス

  1. SetLocaleを使用して、通貨のローカリゼーションルールを制御します。

  2. UNIXのような環境では、 Money_Formatを使用してローカライズされた通貨をすばやく出力できます。

  3. WindowsまたはCross-Platform環境では、 INTL拡張でNumberFormatterを使用することをお勧めします。

  4. 開発中は、ターゲットプラットフォームの地域設定とユーザーを明確にして、ロケールの障害による関数の障害を回避することが重要です。

Money_formatSetlocaleを正しく一致させることにより、さまざまな地域でのアプリケーションのユーザーエクスペリエンスを大幅に改善することができ、ローカルユーザーの読書習慣に合わせて通貨表示をより並べることができます。