删除PHP'的money_format()输出中美元符号后面的空格


Removing the space after the dollar sign in the output of PHP's money_format()

我用

money_format('%(#15.2n',$money)

输出类似

的内容

500.00美元

是否有一种方法可以删除美元符号和500之间的空格?

money_format [docs]甚至可能无法在某些平台上工作。使用number_format [docs]:

更可靠。
echo '$' . number_format($money, 2); // '$12.44'

如果你想让它填充到一定数量的空格,但在数字之前加上美元符号,你也可以使用sprintf [docs]:

echo printf("%15s", '$' . number_format($money, 2)); // '         $12.44'

使用。大小写不敏感 (" ", ", $ 字符串)

删除额外的空格相当简单。您正在使用的代码实际上是添加填充。money_format文档中的一个示例:

//美国国家格式,使用()表示负数
//和10位左精度
setlocale (LC_MONETARY en_US);
返回money_format('%(#10n', $number)。"' n";
// ($ 1,234.57)

示例中的#15是罪魁祸首。如果你要查看pre标签内部的引用,你实际上会看到填充到15个空格的数字。

 $                500.00 

如果你去掉那个…

money_format('%(.2n',$money)

你将得到:

$500.00

您还可以删除(以不将负数包装在括号中(另一种选择是在开头添加-)。如果你仍然想要你在预期结果中引用的单个空格你可以尝试:

money_format('%(#4.2n',$money)
$str = preg_replace('/'s's+/', ' ', $str);

我是这样用的:

function my_money_format($number){
    return str_replace(" ", "",money_format('%+#10n', $number));
}
echo money_format('$%i', $number)