Регистрация Войти
Войти через VK Войти через FB Войти через Google Войти через Яндекс
Войти через VK Войти через FB Войти через Google Войти через Яндекс
Поиск по сайту
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 | Для положительных чисел
|
n_sign_posn | Для отрицательных чисел
|
Элементы группировки описывают способ группировки цифр. Например, в локали 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