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
相关产品推荐
相关产品推荐

