現在の位置: ホーム> 最新記事一覧> 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 (時間形式)などのカテゴリを設定します。

  • $ localezh_cn.utf-8en_us.utf-8などの地域言語コードを指定します。


2。setLocale ()を使用して数値形式を設定する方法

デフォルトでは、PHPの数値形式は、英語のデフォルトの小数点など、特定の領域の仕様に準拠していない場合があります 、そして千番目のセパレーターはです。これらの形式を調整する場合は、 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()があり、10進シンボル、数千のシンボルなどを含む現在の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()は、ローカライズされた数値形式に特定のセパレータを提供します。

  • number_format()localeconv()パラメーターと組み合わせて、数字を柔軟にフォーマットできます。

  • さまざまなシステムの言語コードの違いに注意し、テスト環境で調整します。

  • 現代のプロジェクトでは、より強力な国際的なサポートが必要な場合は、PHPのNumberformatterクラスをお勧めします。

Setlocale()および関連する機能を合理的に使用することにより、PHP開発者はさまざまな地域の習慣を満たすデジタル形式ディスプレイを簡単に実現し、アプリケーションの国際的な経験を改善できます。


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