<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` 可以帮助开发者根据不同~의地区设置,输出符合本地习惯~의货币字符串。하지만,이 두 기능을 사용할 때 많은 초보자가 혼란에 빠지기 쉽습니다.。이 기사는 사용 방법과 예방 조치에 대해 자세히 소개합니다.。
</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>미국 로케일에서는 출력됩니다 : USD 1234.56 .
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>주목해야 할 것은 다음과 같습니다.
Windows 플랫폼에서는 Money_format을 사용할 수 없습니다 . 주로 유닉스와 같은 시스템 (Linux, MacOS)에 효과적입니다.
Windows 또는 이후의 PHP 버전에서는 Numberformatter (Intl Extension)를 사용하여 크로스 플랫폼 통화 형식을 달성하는 것이 좋습니다.
예를 들어:
<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>국제 전자 상거래 시스템을 개발하고 있으며 사용자 국가에 따라 다양한 통화 디스플레이 방법을 내보내야한다고 가정 해 봅시다.
<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>출력은 987 654,32 EUR (프랑스 관습) 일 수 있습니다.
SetLocale을 사용하여 통화의 현지화 규칙을 제어하십시오.
Unix와 같은 환경에서는 Money_format을 직접 사용하여 현지화 된 통화를 신속하게 출력 할 수 있습니다.
Windows 또는 Cross-Platform 환경에서는 INTL 확장자와 함께 NumberFormatter를 사용하는 것이 좋습니다.
개발 중에 로케일의 고장으로 인해 기능의 실패를 피하기 위해 대상 플랫폼 및 사용자의 지역 설정을 명확히하는 것이 중요합니다.
Money_format 및 Setlocale 과 올바르게 일치함으로써 다른 지역에서 응용 프로그램의 사용자 경험을 크게 향상시킬 수있어 지역 사용자의 읽기 습관에 따라 통화 표시가 더 많이 표시됩니다.