Intereting Posts
Yii2 DepDrop kartik функции, используемые для шифрования пароля в php? Назначить значение javascript переменной php Получить высоту и ширину изображения PHP Самый простой способ сделать заявку без обновления Неустранимая ошибка: вызов функции-члена get () для не-объекта в C: \ wamp \ www \ ci \ application \ models \ site_model.php в строке 6 PHP – печатать объектный ключ от json Отсутствуют теги HTML, когда SELECT из MySQL (Codeigniter) Как установить соединение с файлом PHP на веб-сервере с помощью PhoneGap (приложение для Android) в режиме реального времени? Миграция баз данных с помощью механизма отслеживания phpMyAdmin Facebook FQL. Какой самый простой способ получить все изменения страницы в одном запросе, упорядоченном по дате / времени? Ошибка модели Codeigniter Автоматическая электронная почта для администратора при обновлении базы данных Украшение HashMap, добавляющее случайность для предотвращения (D) DoS imagecreatefromjpeg и подобные функции не работают в PHP

Как получить валюту по умолчанию из PHP Intl (библиотека ICU)

Я использую PHP и хотел бы знать, как я могу получить валюту по умолчанию для локали через расширение интернационализации (Wrapper для библиотеки ICU)?

Ниже приведен сценарий, объясняющий, что и почему. Мне нужно что-то заменить getCurrCode() .

 $accepted_currencies = array('USD','EUR'); $locale = Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']); if( ! empty($locale)){ Locale::setDefault($locale); $currency = getCurrCode(); if( ! in_array($currency, $accepted_currencies)){ $currency = 'USD'; } }else{ Locale::setDefault('en_US'); } $fmt = new NumberFormatter( $locale, NumberFormatter::CURRENCY ); $price = $fmt->formatCurrency(1234567.891234567890000, $currency); 

Я знаю, я мог бы использовать setlocale(LC_MONETARY, $locale); но это означает, что я должен установить все языковые версии в Linux и решить проблему с дистрибутивами Linux. Каким будет смысл использовать Intl в первую очередь?

После того, как вы установили Locale в NumberFormatter, вы можете получить код валюты с помощью

 $formatter = new NumberFormatter('de_DE', NumberFormatter::CURRENCY); echo $formatter->getTextAttribute(NumberFormatter::CURRENCY_CODE); $formatter = new NumberFormatter('en_US', NumberFormatter::CURRENCY); echo $formatter->getTextAttribute(NumberFormatter::CURRENCY_CODE); $formatter = new NumberFormatter('ja_JP', NumberFormatter::CURRENCY); echo $formatter->getTextAttribute(NumberFormatter::CURRENCY_CODE); 

Вышеизложенное даст EUR, USD и JPY.