Как отформатировать число в валюте, но не показывать символ? - PullRequest
0 голосов
/ 28 апреля 2020

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

Раньше я использовал number_format, но это устарело в пользу более новой функции.

Я пробовал это:

$val = "23";
$fmt = numfmt_create( 'en', NumberFormatter::CURRENCY);
// i tried the following 
$num = numfmt_format_currency($fmt, $val); // omitted the 3rd parameter but caused error 
$num = numfmt_format_currency($fmt, $val,null); // tried to null or blank the 3rd param but im getting a weird symbol / prefix 

enter image description here

EDIT: исправление, я имел в виду, что money_format устарел, а не number_format. извините

Ответы [ 3 ]

1 голос
/ 28 апреля 2020

Для простоты ответ MultiSuperFreaks является наиболее распространенным. Функция number_format не считается устаревшей.

Если вы хотите использовать расширение intl и класс NumberFormatter, вы можете go как ...

$formatter = new NumberFormatter('en_GB', NumberFormatter::DECIMAL);
$formatter->setAttribute(NumberFormatter::MIN_FRACTION_DIGITS, 2);
var_dump($formatter->format(23)); // string(5) "23.00"

Только не используйте тип NumberFormatter::CURRENCY. Вместо этого используйте тип NumberFormatter::DECIMAL при создании экземпляра класса NumberFormatter, а затем установите атрибут для минимальных 2-значных цифр.

1 голос
/ 28 апреля 2020

Я всего лишь хочу добавить два десятичных знака к каждому числу, вы можете использовать number_format($val, 2), чтобы получить отформатированное число без каких-либо символов.

РЕДАКТИРОВАТЬ: Числовой формат в стандартной библиотеке PHP не устарел (https://www.php.net/manual/en/function.number-format)

0 голосов
/ 28 апреля 2020

Для этого вы можете использовать preg_replace, как в следующем примере:

$string = '@15.32'; 
$pattern = '/([^0-9]*)(\d*)(.*)/'; 
$replacement = '${2}${3}'; 
echo preg_replace($pattern, $replacement, $string); 

Вывод будет: 15:32. Идея состоит в том, что все, вплоть до первого номера, будет отброшено, оставляя вас со всем остальным. Так что в вашем примере останется только номер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...