Печать формата номера валюты в PHP


У меня есть некоторые значения цен для отображения на моей странице.

Я пишу функцию, которая принимает плавающую цену и возвращает форматированную валюту val с кодом валюты тоже..

Например, fnPrice(1001.01) следует вывести $ 1,000.01

Author: Aaron Hall, 2010-10-25

5 answers

Самый простой ответ - это number_format().

echo "$ ".number_format($value, 2);

Если вы хотите, чтобы ваше приложение могло работать с несколькими валютами и форматированием с учетом локали (1.000,00, например, для некоторых из нас, европейцев), оно становится немного сложнее.

Существует money_format() но он не работает в Windows и полагается на setlocale(), что, на мой взгляд, является ерундой, потому что для этого требуется установка (произвольно названных) языковых пакетов на стороне сервера.

Если вы хотите серьезно интернационализируйте свое приложение, подумайте об использовании полноценной библиотеки интернационализации, такой как Zend Framework Zend_Locale и Zend_Currency..

 103
Author: Pekka 웃, 2015-02-16 07:32:00

С расширением intl в PHP 5.3+ вы можете использовать класс NumberFormatter:

$amount = '12345.67';

$formatter = new NumberFormatter('en_GB',  NumberFormatter::CURRENCY);
echo 'UK: ', $formatter->formatCurrency($amount, 'EUR'), PHP_EOL;

$formatter = new NumberFormatter('de_DE',  NumberFormatter::CURRENCY);
echo 'DE: ', $formatter->formatCurrency($amount, 'EUR'), PHP_EOL;

Который выводит:

 UK: €12,345.67
 DE: 12.345,67 €
 47
Author: Mathieu, 2016-03-31 09:13:57

Sprintf() - это функция PHP для всех видов форматирования строк http://php.net/manual/en/function.sprintf.php

Я использую эту функцию:

function formatDollars($dollars){
  return '$ '.sprintf('%0.2f', $dollars);
}
 7
Author: Jim, 2010-10-25 11:12:38

Я создал эту маленькую функцию для автоматического форматирования чего-либо в приятный формат валюты.

function formatDollars($dollars)
{
    return "$".number_format(sprintf('%0.2f', preg_replace("/[^0-9.]/", "", $dollars)),2);
}

Редактировать

Было отмечено, что это не показывает отрицательных значений. Я разбил его на две строки, чтобы было проще редактировать форматирование. Заключите его в скобки, если это отрицательное значение:

function formatDollars($dollars)
{
    $formatted = "$" . number_format(sprintf('%0.2f', preg_replace("/[^0-9.]/", "", $dollars)), 2);
    return $dollars < 0 ? "({$formatted})" : "{$formatted}";
}
 2
Author: DAWTSF, 2016-06-24 15:52:08

В PHP для этого есть функция money_format. Читайте об этом здесь.

 1
Author: Pila, 2017-06-23 11:53:52