You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP 8下实现带符号后空格的印度货币金额转换

解决PHP 8中印度货币格式符号后无空格的问题

方案1:字符串替换法

直接将格式化后的字符串里的卢比符号₹替换成₹ ,简单直接:

$fmt = new \NumberFormatter('en_IN', \NumberFormatter::CURRENCY);
$amount = 12389;
$formatted = $fmt->formatCurrency($amount, "INR");
// 替换符号,添加空格
$formatted = str_replace('₹', '₹ ', $formatted);
echo $formatted; // 输出 ₹ 12,389.00

方案2:自定义格式化模式

通过设置NumberFormatter的自定义模式,直接指定符号与数字间的空格,更灵活:

$fmt = new \NumberFormatter('en_IN', \NumberFormatter::PATTERN_DECIMAL);
// 设置带小数的格式:符号+空格+印度分组数字+两位小数
$fmt->setPattern('¤ #,##0.00');
// 指定货币为INR,确保显示卢比符号
$fmt->setTextAttribute(\NumberFormatter::CURRENCY_CODE, 'INR');

$amount = 12389;
$formatted = $fmt->format($amount);
echo $formatted; // 输出 ₹ 12,389.00

如果不需要小数位,把模式改成¤ #,##0即可:

$fmt->setPattern('¤ #,##0');
echo $fmt->format(12389); // 输出 ₹ 12,389

方案3:正则表达式替换

用正则匹配开头的卢比符号并替换,适合复杂场景下的精准替换:

$fmt = new \NumberFormatter('en_IN', \NumberFormatter::CURRENCY);
$amount = 12389;
$formatted = $fmt->formatCurrency($amount, "INR");
// 替换开头的₹为₹ 
$formatted = preg_replace('/^₹/', '₹ ', $formatted);
echo $formatted;

内容的提问来源于stack exchange,提问作者Tirth Patel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 20:33:17