如何在 `money_format` 中用 ✪ ("&\#x272A;") 替换 *?

How to replace * with ✪ ("&\#x272A;") in `money_format`?

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

returns $**163.1785 对于 $str.

我想改为打印 $✪✪163.1785

我该如何解决这个问题?

money_format can only accept a single byte fill character, so you cannot directly achieve what you want. However you can use str_replacemoney_format 之后将 * 更改为 :

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

输出:

✪163.1785

请注意,只有一个 ,因为您指定的宽度为 4,并且数字中有 3 个数字。

Demo on 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);

因此您可以在需要时随时调用该函数,在您编写的每一部分代码中