php localeconvで現在のロケールの数値に関連する情報を取得する

  • 作成日 2021.10.14
  • php
php localeconvで現在のロケールの数値に関連する情報を取得する

phpで、localeconvを使用して、現在のロケールの数値に関連する情報を取得するサンプルコードを記述してます。phpのバージョンは8.0です。

環境

  • OS  CentOS Linux release 8.0.1905 (Core)
  • php 8.0.0
  • nginx 1.14.1

localeconv使い方

localeconvを使用すれば、現在のロケールの数値に関連する情報を取得することが可能です。

localeconv();

以下は、現在のロケールの数値に関連する情報を取得するサンプルコードとなります。

<?php

$result = localeconv();

var_dump($result);

実行結果

array(18) {
  'decimal_point' =>
  string(1) "."
  'thousands_sep' =>
  string(0) ""
  'int_curr_symbol' =>
  string(0) ""
  'currency_symbol' =>
  string(0) ""
  'mon_decimal_point' =>
  string(0) ""
  'mon_thousands_sep' =>
  string(0) ""
  'positive_sign' =>
  string(0) ""
  'negative_sign' =>
  string(0) ""
  'int_frac_digits' =>
  int(127)
  'frac_digits' =>
  int(127)
  'p_cs_precedes' =>
  int(127)
  'p_sep_by_space' =>
  int(127)
  'n_cs_precedes' =>
  int(127)
  'n_sep_by_space' =>
  int(127)
  'p_sign_posn' =>
  int(127)
  'n_sign_posn' =>
  int(127)
  'grouping' =>
  array(0) {
  }
  'mon_grouping' =>
  array(0) {
  }
}

各戻り値は以下となります。

decimal_point
小数点を表す文字

thousands_sep
千ごとの桁の区切り文字

int_curr_symbol
国際通貨記号

currency_symbol
ローカルの通貨記号

mon_decimal_point
通貨表記における、小数点を表す文字

mon_thousands_sep
通貨表記における、千ごとの桁の区切り文字

positive_sign
正数を表す記号

negative_sign
負数を表す記号

int_frac_digits
国際的な分割の桁

frac_digits
ローカルな分割の桁

p_cs_precedes
currency_symbolが、正の値の前に来る時はTRUE

currency_symbolが、正の値の後に来る時はFALSE

p_sep_by_space
currency_symbolと正の値を、1文字の空白で区切る時はTRUE

currency_symbolと正の値を、1文字の空白で区切らない時はFALSE

n_cs_precedes
currency_symbolが、負の値の前に来る時はTRUE

currency_symbolが、負の値の後に来る時はFALSE

n_sep_by_space
currency_symbolと負の値を、1文字の空白で区切る時はTRUE

currency_symbolと負の値を、1文字の空白で区切らない時はFALSE

p_sign_posn
プラス記号の場所

0: 数値や通貨記号を括る括弧
1: 符号文字列は数値や通貨記号の前
2: 符号文字列は数値や通貨記号の後
3: 符号文字列は通貨記号の直前
4: 符号文字列は通貨記号の直後

n_sign_posn
マイナス記号の位置

0: 数値や通貨記号を括る括弧
1: 符号文字列は数値や通貨記号の前
2: 符号文字列は数値や通貨記号の後
3: 符号文字列は通貨記号の直前
4: 符号文字列は通貨記号の直後

grouping
グループ化

mon_grouping
通貨表記における、グループ化

ロケールをアメリカに設定すると結果は、以下の通りとなります。

<?php

setlocale( LC_ALL, "en_US.UTF8" );

$result = localeconv();

var_dump($result);

実行結果

array(18) {
  'decimal_point' =>
  string(1) "."
  'thousands_sep' =>
  string(0) ""
  'int_curr_symbol' =>
  string(0) ""
  'currency_symbol' =>
  string(0) ""
  'mon_decimal_point' =>
  string(0) ""
  'mon_thousands_sep' =>
  string(0) ""
  'positive_sign' =>
  string(0) ""
  'negative_sign' =>
  string(0) ""
  'int_frac_digits' =>
  int(127)
  'frac_digits' =>
  int(127)
  'p_cs_precedes' =>
  int(127)
  'p_sep_by_space' =>
  int(127)
  'n_cs_precedes' =>
  int(127)
  'n_sep_by_space' =>
  int(127)
  'p_sign_posn' =>
  int(127)
  'n_sign_posn' =>
  int(127)
  'grouping' =>
  array(0) {
  }
  'mon_grouping' =>
  array(0) {
  }
}
(base) [testuser@localhost html]$ php sample.php
/usr/share/nginx/html/sample.php:7:
array(18) {
  'decimal_point' =>
  string(1) "."
  'thousands_sep' =>
  string(1) ","
  'int_curr_symbol' =>
  string(4) "USD "
  'currency_symbol' =>
  string(1) "$"
  'mon_decimal_point' =>
  string(1) "."
  'mon_thousands_sep' =>
  string(1) ","
  'positive_sign' =>
  string(0) ""
  'negative_sign' =>
  string(1) "-"
  'int_frac_digits' =>
  int(2)
  'frac_digits' =>
  int(2)
  'p_cs_precedes' =>
  int(1)
  'p_sep_by_space' =>
  int(0)
  'n_cs_precedes' =>
  int(1)
  'n_sep_by_space' =>
  int(0)
  'p_sign_posn' =>
  int(1)
  'n_sign_posn' =>
  int(1)
  'grouping' =>
  array(2) {
    [0] =>
    int(3)
    [1] =>
    int(3)
  }
  'mon_grouping' =>
  array(2) {
    [0] =>
    int(3)
    [1] =>
    int(3)
  }
}