현재 위치: > 최신 기사 목록> setLocale () 숫자 형식을 설정하기위한 연습 및 기술

setLocale () 숫자 형식을 설정하기위한 연습 및 기술

gitbox 2025-06-03

PHP 개발에서는 종종 다른 지역의 습관, 특히 통화 금액, 소수점 및 수천의 표현에 따라 숫자를 형식화해야합니다. PHP는 SetLocale () 함수를 제공하여 영역 정보를 설정하여 숫자 및 날짜와 같은 형식의 디스플레이 방법에 영향을 미칩니다. 이 기사에서는 setlocale ()을 SetNumber 형식에 사용하는 방법과 관련 형식 제어 기술 및 실제 예제를 자세히 설명합니다.


1. setLocale () 란 무엇입니까?

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 등과 같은 지역 언어 코드를 지정하십시오.


2. setlocale ()을 사용하여 숫자 형식을 설정하는 방법

기본적으로 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 환경에서 사용 가능한 언어 코드는 정확히 동일하지 않습니다.


3. localeconv ()를 결합하여 국소화 된 숫자 형식 매개 변수를 얻습니다

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

이 예에서 독일 번호 형식은 소수점 사용되어 밀리이트에 사용됩니다 . 독일 관습에 따라.


4. 실용적인 기술

  1. 정확한 영역 코드를 지정하는 데 우선 순위 <br> 다른 운영 체제에서 지원하는 로케일 코드는 다릅니다. 배열로 전달할 수 있습니다. PHP는 차례로 시도합니다.

 setlocale(LC_ALL, ['zh_CN.UTF-8', 'zh_CN', 'Chinese']);
  1. localeconv ()number_format ()를 결합하여 동적 형식 <br>를 구현합니다 현재 로케일에 의해 얻은 분리기를 기반으로 동적으로 형식화합니다.

  2. 통화 형식을 처리 할 때 lc_monetary를 사용하고 money_format ()를 결합합니다 (PHP7은 나중에 지원하지 않습니다).
    현대 프로젝트는 Numberformatter 클래스를 사용하는 것이 좋습니다.


5. 예 : 영역에 따라 형식화 된 숫자의 동적 출력

 <?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로 사용하는 데 사용되며 소수점은 쉼표입니다.


6. 요약

  • 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']);
?>