PHP 개발에서는 종종 다른 지역의 습관, 특히 통화 금액, 소수점 및 수천의 표현에 따라 숫자를 형식화해야합니다. PHP는 SetLocale () 함수를 제공하여 영역 정보를 설정하여 숫자 및 날짜와 같은 형식의 디스플레이 방법에 영향을 미칩니다. 이 기사에서는 setlocale ()을 SetNumber 형식에 사용하는 방법과 관련 형식 제어 기술 및 실제 예제를 자세히 설명합니다.
setLocale () 은 PHP에서 로케일 설정을 설정하는 데 사용되는 기능입니다. 숫자, 통화, 날짜 및 시간의 디스플레이 형식에 영향을 미치면 지정된 지역 규칙에 따라 프로그램이 출력을 형식화 할 수 있습니다.
기능 프로토 타입 :
setlocale(int $category, string|array $locale): string|false
$ 카테고리 : LC_NUMERIC (숫자 형식), LC_MONETARY (통화 형식), LC_TIME (시간 형식) 등과 같은 범주를 설정합니다.
$ locale : Zh_CN.UTF-8 , en_us.utf-8 등과 같은 지역 언어 코드를 지정하십시오.
기본적으로 PHP의 숫자 형식은 영어 IS의 기본 소수점과 같은 특정 지역의 사양을 준수하지 않을 수 있습니다 . , 그리고 천 번째 분리기는입니다 . 이 형식을 조정하려면 setlocale ()을 사용해야합니다.
예 : 중국 환경으로 설정하고 디지털 형식 조정
<?php
// 숫자 형식을 중국 환경으로 설정하십시오
setlocale(LC_NUMERIC, 'zh_CN.UTF-8');
// 디지털 형식을 테스트하십시오
$number = 1234567.89;
// 사용 number_format() 형식 번호
echo number_format($number, 2, ',', ' ');
?>
위의 예에서 :
setLocale ()을 통해 디지털 형식 환경을 지정하십시오.
Number_Format () 로 소수점과 수천 개의 분리기 문자를 사용자 정의하십시오.
SetLocale (LC_Numeric, ...) 의 지원은 시스템 및 PHP 버전에 따라 다를 수 있으며 Windows 및 Linux 환경에서 사용 가능한 언어 코드는 정확히 동일하지 않습니다.
PHP에는 LocalEconv () 함수가 있으며, 이는 소수점 기호, 수천 개의 기호 등을 포함하여 현재 setLocale () 환경에서 숫자 형식 정보를 반환합니다.
예:
<?php
// 이 지역을 독일어로 설정하십시오(독일)
setlocale(LC_ALL, 'de_DE.UTF-8');
// 현재 현지화 된 형식 정보를 얻으십시오
$locale_info = localeconv();
$number = 1234567.89;
echo "Decimal point: " . $locale_info['decimal_point'] . "\n";
echo "Thousands separator: " . $locale_info['thousands_sep'] . "\n";
// 사용 locale 信息형식 번호
echo number_format(
$number,
2,
$locale_info['decimal_point'],
$locale_info['thousands_sep']
);
?>
산출:
Decimal point: ,
Thousands separator: .
1.234.567,89
이 예에서 독일 번호 형식은 소수점 에 사용되어 밀리이트에 사용됩니다 . 독일 관습에 따라.
정확한 영역 코드를 지정하는 데 우선 순위 <br> 다른 운영 체제에서 지원하는 로케일 코드는 다릅니다. 배열로 전달할 수 있습니다. PHP는 차례로 시도합니다.
setlocale(LC_ALL, ['zh_CN.UTF-8', 'zh_CN', 'Chinese']);
localeconv () 및 number_format ()를 결합하여 동적 형식 <br>를 구현합니다 현재 로케일에 의해 얻은 분리기를 기반으로 동적으로 형식화합니다.
통화 형식을 처리 할 때 lc_monetary를 사용하고 money_format ()를 결합합니다 (PHP7은 나중에 지원하지 않습니다).
현대 프로젝트는 Numberformatter 클래스를 사용하는 것이 좋습니다.
<?php
// 로케일 설정
setlocale(LC_ALL, 'fr_FR.UTF-8');
// 현지화 된 디지털 형식 정보를 얻으십시오
$locale = localeconv();
$number = 9876543.21;
// 输出형식 번호
echo number_format($number, 2, $locale['decimal_point'], $locale['thousands_sep']);
?>
실행 결과 :
9 876 543,21
프랑스는 공간을 천 분의 1로 사용하는 데 사용되며 소수점은 쉼표입니다.
setLocale ()은 숫자 형식의 로케일 환경을 제어 할 수 있습니다.
LocalEconv ()는 국소화 된 숫자 형식에 대한 특정 분리기를 제공합니다.
localeconv () 매개 변수와 결합 된 number_format ( )는 숫자를 유연하게 형식화 할 수 있습니다.
다른 시스템의 언어 코드의 차이에주의를 기울이고 테스트 환경에서 조정하십시오.
현대 프로젝트에서는 더 강력한 국제 지원이 필요한 경우 PHP의 Numberformatter 클래스를 추천합니다.
PHP 개발자는 SetLocale () 및 관련 기능을 합리적으로 사용하여 다양한 지역의 습관을 충족시키는 디지털 형식 디스플레이를 쉽게 실현하여 응용 프로그램의 국제 경험을 향상시킬 수 있습니다.
<?php
// 예:설정locale단순화 된 중국인입니다,형식 번호输出
setlocale(LC_ALL, 'zh_CN.UTF-8');
$number = 1234567.89;
$locale = localeconv();
echo number_format($number, 2, $locale['decimal_point'], $locale['thousands_sep']);
?>