setlocale(LC_MONETARY, 'en_US');
$str = money_format('%=*#4.4n',163.17852837291);
возвращает $**163.1785 для $str.
Вместо этого я хочу распечатать $✪✪163.1785.
Как решить проблему?






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 цифры в номере.
Вы можете определить конкретную функцию следующим образом:
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);
Таким образом, вы можете вызывать функцию, когда вам это нужно, в любой части вашего кода.
Привет @Emma, не могли бы вы использовать другую функцию вместо money_format?