<span><span><span class="hljs-meta"><?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">?></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 。
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>注意すべきは、次のとおりです。
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>-></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>国際的な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ユーロ(フランスのカスタム)。
SetLocaleを使用して、通貨のローカリゼーションルールを制御します。
UNIXのような環境では、 Money_Formatを使用してローカライズされた通貨をすばやく出力できます。
WindowsまたはCross-Platform環境では、 INTL拡張でNumberFormatterを使用することをお勧めします。
開発中は、ターゲットプラットフォームの地域設定とユーザーを明確にして、ロケールの障害による関数の障害を回避することが重要です。
Money_formatとSetlocaleを正しく一致させることにより、さまざまな地域でのアプリケーションのユーザーエクスペリエンスを大幅に改善することができ、ローカルユーザーの読書習慣に合わせて通貨表示をより並べることができます。