localeconv

(PHP 4 >= 4.0.5, PHP 5)

localeconv - Возвращает информацию о числовых форматах

Описание

array localeconv ( void )

Возвращает ассоциативный массив с информацией о числовых и денежных форматах в текущей локали.

localeconv() возвращает данные, основанные на текущей локали, установленной функцией setlocale(). Возвращаемый массив содержит следующие элементы:

Элемент Описание
decimal_point Символ десятичной точки
thousands_sep Разделитель групп
grouping Массив, содержащий количества цифр в группах для числовых данных
int_curr_symbol Международное обозначение валюты (например RUR)
currency_symbol Национальное обозначение валюты (например р.)
mon_decimal_point Символ десятичной точки в денежном формате
mon_thousands_sep Разделитель групп в денежном формате
mon_grouping Массив, содержащий количества цифр в группах для денежных данных
positive_sign Знак для положительных чисел
negative_sign Знак для отрицательных чисел
int_frac_digits Число разрядов после точки (международное)
frac_digits Число разрядов после точки (национальное)
p_cs_precedes TRUE если currency_symbol записывется перед положительным значением, иначе FALSE
p_sep_by_space TRUE если currency_symbol отделяется от положительного значения пробелом, иначе FALSE
n_cs_precedes TRUE если currency_symbol записывется перед отрицательным значением, иначе FALSE
n_sep_by_space TRUE если currency_symbol отделяется от отрицательного значения пробелом, иначе FALSE
p_sign_posn Для положительных чисел
  • 0 Число и обозначение валюты заключаются в скобки
  • 1 Знак записывается перед числом и обозначением валюты
  • 2 Знак записывается после числа и обозначения валюты
  • 3 Знак записывается перед обозначением валюты
  • 4 Знак записывается после обозначения валюты
n_sign_posn Для отрицательных чисел
  • 0 Число и обозначение валюты заключаются в скобки
  • 1 Знак записывается перед числом и обозначением валюты
  • 2 Знак записывается после числа и обозначения валюты
  • 3 Знак записывается перед обозначением валюты
  • 4 Знак записывается после обозначения валюты

Элементы группировки описывают способ группировки цифр. Например, в локали en_US элемент grouping содержит массив из 2 элементов со значениями 3 и 3. Больший индекс массива соответствует группировке цифр, расположенных левее. Если элемент массива равен CHAR_MAX, последующие цифры не группируются. Если элемент массива равен 0, используется значение предыдущего элемента.


Пример 1. Пример использования localeconv()
setlocale(LC_ALL, "ru_RU");

$locale_info = localeconv();

echo "<pre>\n";
echo "----------------------------------------------\n";
echo "Информация о форматировании числовых величин: \n";
echo "----------------------------------------------\n\n";

echo "int_curr_symbol: {$locale_info["int_curr_symbol"]}\n";
echo "currency_symbol: {$locale_info["currency_symbol"]}\n";
echo "mon_decimal_point: {$locale_info["mon_decimal_point"]}\n";
echo "mon_thousands_sep: {$locale_info["mon_thousands_sep"]}\n";
echo "positive_sign: {$locale_info["positive_sign"]}\n";
echo "negative_sign: {$locale_info["negative_sign"]}\n";
echo "int_frac_digits: {$locale_info["int_frac_digits"]}\n";
echo "frac_digits: {$locale_info["frac_digits"]}\n";
echo "p_cs_precedes: {$locale_info["p_cs_precedes"]}\n";
echo "p_sep_by_space: {$locale_info["p_sep_by_space"]}\n";
echo "n_cs_precedes: {$locale_info["n_cs_precedes"]}\n";
echo "n_sep_by_space: {$locale_info["n_sep_by_space"]}\n";
echo "p_sign_posn: {$locale_info["p_sign_posn"]}\n";
echo "n_sign_posn: {$locale_info["n_sign_posn"]}\n";
echo "</pre>\n";

Пример 2. Функция возвращает установленный денежный и числовой форматы
function displayLocales($number, $isMoney, $lg='en_US.utf8') {
 $ret = setLocale(LC_ALL, $lg);
 setLocale(LC_TIME, 'Europe/Paris');
 if ($ret===FALSE) {
 echo "Language '$lg' is not supported by this system.\n";
 return;
 }
 $LocaleConfig = localeConv();
 forEach($LocaleConfig as $key => $val) $$key = $val;

 // Sign specifications:
 if ($number>0) {
 $sign = $positive_sign;
 $sign_posn = $p_sign_posn;
 $sep_by_space = $p_sep_by_space;
 $cs_precedes = $p_cs_precedes;
 } else {
 $sign = $negative_sign;
 $sign_posn = $n_sign_posn;
 $sep_by_space = $n_sep_by_space;
 $cs_precedes = $n_cs_precedes;
 }

 // Number format:
 $n = number_format(abs($number), $frac_digits,
 $decimal_point, $thousands_sep);
 $n = str_replace(' ', ' ', $n);
 switch($sign_posn) {
 case 0: $n = "($n)"; break;
 case 1: $n = "$sign$n"; break;
 case 2: $n = "$n$sign"; break;
 case 3: $n = "$sign$n"; break;
 case 4: $n = "$n$sign"; break;
 default: $n = "$n [error sign_posn=$sign_posn !]";
 }

 // Currency format:
 $m = number_format(abs($number), $frac_digits,
 $mon_decimal_point, $mon_thousands_sep);
 if ($sep_by_space) $space = ' '; else $space = '';
 if ($cs_precedes) $m = "$currency_symbol$space$m";
 else $m = "$m$space$currency_symbol";
 $m = str_replace(' ', ' ', $m);
 switch($sign_posn) {
 case 0: $m = "($m)"; break;
 case 1: $m = "$sign$m"; break;
 case 2: $m = "$m$sign"; break;
 case 3: $m = "$sign$m"; break;
 case 4: $m = "$m$sign"; break;
 default: $m = "$m [error sign_posn=$sign_posn !]";
 }
 if ($isMoney) return $m; else return $n;
}

$number = -12345.12345;
echo '<div>'.displayLocales($number, FALSE)."</div>\n";
echo '<div>'.displayLocales($number, TRUE)."</div>\n";

Смотрите также описание функции setlocale().

Описание на ru2.php.net
Описание на php.ru