Как заменить * на ✪ ("&\#x272A;") в `money_format`?

setlocale(LC_MONETARY, 'en_US');
$str = money_format('%=*#4.4n',163.17852837291);

возвращает $**163.1785 для $str.

Вместо этого я хочу распечатать $✪✪163.1785.

Как решить проблему?

Привет @Emma, ​​не могли бы вы использовать другую функцию вместо money_format?

Ass3mbler 23.01.2019 23:35
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
1
68
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

money_format может принимать только один байтовый символ заполнения, поэтому вы не можете напрямую достичь того, что хотите. Однако вы можете использовать str_replace после money_format, чтобы изменить * на :

setlocale(LC_MONETARY, 'en_US');
$str = money_format('%=*#4.4n',163.17852837291);
$str = str_replace('*', '✪', $str);
echo $str;

Вывод:

✪163.1785

Обратите внимание, что есть только один , так как вы указали ширину 4 и у вас есть 3 цифры в номере.

Демо на 3v4l.org

Вы можете определить конкретную функцию следующим образом:

function m_money_format($f, $s)
{
    return str_replace("*", "&\#x272a;", money_format($f,$s));
}

setlocale(LC_MONETARY, 'en_US');
$str = m_money_format($f, $s);

Таким образом, вы можете вызывать функцию, когда вам это нужно, в любой части вашего кода.

Другие вопросы по теме