[Image] Понедельник, 18.11.2024, 11:47 [Image]
SEO, технологии, игры, IT новости
[Image] Главная Регистрация Вход [Image]
[Image] Приветствую Вас, Гость · RSS [Image]
Меню сайта

Форма входа
 Блог
Главная » 2010 » Декабрь » 18 » Форматирование денежных значений
22:30
Форматирование денежных значений
Функция moneyf ormat () может использоваться для форматирования числовых значений в денежном выражении для данного регионального стандарта. Функция принимает два параметра:
money_format ($format, $number)
Параметр $number содержит числовое значение с плавающей точкой, которое должно быть форматировано, а параметр $format — строку, задающую правила форматирования, которым должна следовать функция money_f ormat (). Строка формата содержит следующие элементы:
Основы разработки на РНР
* *, Глава 1
• Символ %.
• Один или более флагов опций.
• Необязательное значение ширины поля.
• Необязательный идентификатор выравнивания.
• Необязательное целое значение точности.
• Необязательную точку и десятичную точность.
• Символ конверсии.
Таким образом, самая простая форматная строка состоит из символа % и символа конверсии, который задает способ форматирования $number в соответствии с информацией из табл. 1.6.
Таблица 1.6. Спецификаторы money_f ormat ()
Опция Значение
% Печатать символ процента.
п Форматировать денежное значение в соответствии с локальными национальными установками.
 i Форматировать денежное значение в соответствии с локальными интернациональными установками.
Разница между национальным и интернациональным денежными форматами существенна в зависимости от аудитории пользователей ваших программ. Например, рассмотрим следующий сценарий:
$а = 1232322210.44;
setlocale (LC_MONETARY, 'en_US');
echo money_format ("%n", $a);
echo "\n";
echo money_foritiat ("%i", $a) ;
echo "\n";
?>
После его выполнения будет напечатан следующий результат:
$1,232,322,210.44
USD 1,232,322,210.44
Как вы можете видеть, первая директива (с национальными установками) форматирует денежное значение так, как его написал бы человек, обычно использующий эти установки. С другой стороны, вторая директива форматирует значение, используя метод, принятый в интернациональной среде. Если вы находитесь в США, то понятно, что под $10 вы понимаете "десять долларов США", в то время как для канадцев это может означать "10 канадских долларов". Как известно, это две очень разные интерпретации. Таким образом, если вы ориентируетесь на интернациональную аудиторию, то, возможно, будете использовать спецификатор ' i ', который даст на выходе универсально опознаваемую строку "USD".
Вы можете модифицировать вывод money_format () для более полного соответствия вашим потребностям. Например, вы можете использовать необязательные флаги для изменения минимальной длины результата:
setlocale (LC_MONETARY, 'en_US');
echo money_format ('%=030#5.2i', 1000);
?>
Директива #5.2 в спецификаторе формата указывает, что результирующая строка должна иметь не менее 5 целых и 2 дробных десятичных разряда. Часть =0 означает, что минимальная длина целой/дробной части должна достигаться заполнением недостающих позиций нулями. Фактически вы можете использовать любой символ — например, звездочка (*) часто применяется при печати чеков. И, наконец, последняя часть 30 используется для того, чтобы задать, что поле должно быть, по меньшей мере, 30 символов длиной. В результате получается следующий вывод: USD 01,000.00
Как видите, символ разделения групп (запятая) не входит в общее число разрядов, указанное флагами.
Возможности money format () не ограничиваются этим. Вы также можете использовать флаг ! для подавления вывода идентификатора валюты и флаг Л для предотвращения использования разделителей групп. Это означает, что вы можете использовать money_format О как замену number_format () несмотря на то, что она не имеет такой гибкости, как последняя.
Если вы удивляетесь, зачем вообще заботиться обо всем этом, вспомните, что для того, чтобы изменить способ форматирования numberf ormat () для использования региональных стандартов по вашему выбору, необходимо изменить значение локального параметра LC_NUMBERIC, что затронет числовой ввод, поступаемый извне (включая базы данных). То есть, например, если ваша база данных работает в региональном стандарте, отличном от того, что должен использоваться при отображении результата пользователю (как это и нужно большинству в распределенной среде), вы постоянно должны вызывать setlocale () перед тем, как выполнить number_format () для обеспечения того, чтобы данные, которые вы читаете и пишете в базу данных, были сформатированы корректно.
С другой стороны, если вы используете currency_format () для печати числовых значений, вам понадобится только единожды изменить региональную установку LC_MONETARY и оставить ее неизменной до конца сценария.
И, наконец, следует отметить, что параметр $format функции money_format() также может содержать текст, расширяемый до действительной спецификации формата вывода функции. Дополнительный текст будет возвращен функцией "как есть" (но не забудьте отменить каждый символ процента, используя %%). Ниже показан пример.
setlocale (LC_MONETARY, 'enJJS');
echo money_format ('Общая сумма %n, оплачено 50%% после подписи контракта' .
' и 50%% по завершении проекта', 1000);
?>
Этот сценарий выведет следующую строку:
Общая сумма $1,000.00, оплачено 50% после подписи контракта и 50% по завершении проекта
Категория: Все о PHP | Просмотров: 1256 | Добавил: witkom8382 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Copyright MyCorp © 2024
Категории
Оптимизация сайта [591]
Создание сайтов [355]
Заработать в интернете [508]
Технологии [46]
Полезное [391]
Услуги и сервисы [317]
Автоблог [105]
Скрипты для Ucoz [39]
Движок на сайт [10]
Все о Joomla и Drupal [20]
Все о PHP [91]
Поиск
Пользовательский поиск
Статистика


Онлайн всего: 3
Гостей: 3
Пользователей: 0
Seo сайт, технологии продвижения, мета теги, оптимизация сайтов, новости сео, Скрипты, Ucoz

Рейтинг@Mail.ru