php에서 Money_format () 는 통화 금액을 형식화하는 데 사용되는 함수이며, 이는 특정 지역의 통화 형식으로 값을 변환합니다. 그러나 많은 개발자들은이 기능을 사용할 때 특히 시스템의 로케일 설정과 관련하여 구성 문제에 종종 발생합니다. 이 기사는 Money_format () 함수와 로케일 설정 간의 관계를 자세히 살펴보고 PHP 환경을 올바르게 구성하여 기능이 예상대로 작동하는지 확인하는 방법을 소개합니다.
Money_format () 함수는 숫자 값을 특정 지역의 관습을 준수하는 통화 형식으로 형식화하는 데 사용됩니다. 구문은 다음과 같습니다.
<span><span><span class="hljs-title function_ invoke__">money_format</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$format</span></span><span>, </span><span><span class="hljs-keyword">float</span></span><span> </span><span><span class="hljs-variable">$number</span></span><span>): </span><span><span class="hljs-keyword">string</span></span><span>
</span></span>
$ 형식 : 이것은 통화의 디스플레이 형식을 정의하는 문자열입니다. 예를 들어, "%i"는 금액이 통화로 표시됨을 의미합니다.
$ 숫자 : 이것은 형식으로 필요한 숫자입니다.
Money_format () 의 일반적인 응용 프로그램은 금액을 통화 기호, 천명 분리기 및 소수점을 포함한 통화 값으로 포맷하는 것입니다.
<span><span><span class="hljs-variable">$amount</span></span><span> = </span><span><span class="hljs-number">123456.789</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">'%.2n'</span></span><span>, </span><span><span class="hljs-variable">$amount</span></span><span>); </span><span><span class="hljs-comment">// 산출 $123,456.79</span></span><span>
</span></span>
Money_format () 함수의 출력은 서버의 현재 로케일 설정과 밀접한 관련이 있습니다. 로케일은 언어, 시간, 날짜 및 통화와 같은 지역의 특정 형식을 결정하는 운영 체제의 설정입니다. 예를 들어, 통화 기호, 천명 분리기 및 소수점 기호는 다른 로케일마다 다를 수 있습니다.
Money_format ()는 현재 로케일 에 따라 출력을 포맷하는 방법을 결정합니다. 예를 들어, 미국의 로케일 하에서 통화 기호는 달러 표시 ($)이며 유럽의 로케일 하에서 유로 표시 (€) 일 수 있습니다.
Money_format () 함수가 예상대로 작동하는지 확인하려면 먼저 시스템의 로케일을 올바르게 구성해야합니다. PHP에서는 setlocale () 함수를 통해 현재 로케일을 설정할 수 있습니다.
<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-comment">// 미국 지역으로 설정됩니다</span></span><span>
</span></span>
lc_monetary 는 통화 형식을 설정하는 범주로서 Money_format () 의 동작에 영향을 미칩니다.
'en_us.utf-8'은 미국의 영어권 지역에서 UTF-8로 설정된 UTF-8 문자 세트를 의미합니다.
예를 들어 실제 요구에 따라 다른 지역을 설정할 수 있습니다.
'zh_cn.utf-8' : 중국어
'fr_fr.utf-8' : 프랑스어
'de_de.utf-8' : 독일어
현재 지원되는 로케일 설정에 대해 확실하지 않은 경우 로케일 -A 명령을 사용하여 운영 체제에 설치된 모든 로케일을 볼 수 있습니다.
PHP의 Money_format () 함수는 운영 체제의 로케일 설정에 따라 달라 지므로 운영 체제가 특정 로케일을 지원하는 것이 중요합니다. Money_format () 출력이 기대치를 충족하지 않으면 관련 로케일이 올바르게 설치되거나 구성되지 않기 때문일 수 있습니다.
대부분의 Linux 서버에서 다음 명령으로 필요한 로케일을 설치할 수 있습니다.
<span><span>sudo locale-gen en_US.UTF-8
sudo update-locale
</span></span>
이를 통해 시스템 이 en_us.utf-8 로케일을 지원할 수 있습니다. Windows 사용자의 경우 PHP의 Money_Format () 함수가 완전히 지원되지 않을 수 있으며 일부 버전의 Windows에서는 사용할 수 없습니다.
money_format () 가 false를 반환합니다
Money_format () 이 Returns False 라고하는 경우 일반적으로 시스템의 로케일 설정이 유효하지 않거나 지원되지 않음을 의미합니다. 필요한 로케일이 SetLocale () 을 통해 올바르게 설치되고 구성되어 있는지 확인해야합니다.
잘못된 통화 기호 또는 형식 <br> 출력 통화 기호 또는 형식이 기대치를 충족하지 않으면 LC_Monetary가 올바르게 설정되어 있는지 확인하고 로케일이 대상 영역과 일치하는지 확인하십시오.
Windows의 호환성 문제 <br> 앞에서 언급했듯이 Windows의 PHP는 Money_Format ()를 완전히 지원하지 않으므로 Windows 환경에서 개발중인 경우 Number_Format () 또는 외부 라이브러리 (예 : intl 확장자의 NumberFormatter )와 같은 대안을 사용하는 것이 좋습니다.
Money_format ()은 일부 환경 (예 : Windows)에서 지원되지 않으므로 INTL 확장의 일부인 PHP의 Numberformatter 클래스를 사용하는 것을 고려할 수 있으며 더 많은 지역 설정을 지원하며 크로스 플랫폼 호환성이 향상됩니다.
<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">123456.789</span></span><span>, </span><span><span class="hljs-string">"USD"</span></span><span>); </span><span><span class="hljs-comment">// 산출 $123,456.79</span></span><span>
</span></span>
Numberformatter는 다양한 국제 통화 형식을 처리하는 데 적합한 유연성과 호환성을 제공합니다.
Money_format () 는 해당 지역을 기반으로 통화 금액을 포맷하는 데 유용한 기능이지만 시스템의 로케일 구성에 따라 다릅니다. 올바른 출력을 보장하려면 로케일을 합리적으로 구성해야하며 PHP 환경의 지원을 확인해야합니다. 일부 플랫폼에서 문제가 발생하면 NumberFormatter는 보다 신뢰할 수있는 대안입니다. 이러한 기본 개념 및 구성 방법을 이해하면 개발자가 국제 통화 디스플레이 문제를 더 잘 처리 할 수 있습니다.