Php 如何以美国格式和欧洲格式格式化int

Php 如何以美国格式和欧洲格式格式化int,php,format,int,Php,Format,Int,我得到一个美国格式的整数 $UsInt = "67,450"; 我需要把它转换成欧洲格式 $EuInt = "67450"; 我不能使用str_replace()来替换维古尔。请勿使用str_replace()强制存款 我不能使用number\u format(),因为我不能将逗号分隔的数字传递给此函数 是否存在一个PHP函数来执行此操作?或者有人已经有了问题,并且能够逃出去?您可以使用PHP函数number\u format(): 有关详细信息,您可以转到以“取消格式化”字符串,您可以使用

我得到一个美国格式的整数

$UsInt = "67,450";
我需要把它转换成欧洲格式

$EuInt = "67450";
我不能使用
str_replace()
来替换维古尔。请勿使用str_replace()强制存款

我不能使用
number\u format()
,因为我不能将逗号分隔的数字传递给此函数


是否存在一个PHP函数来执行此操作?或者有人已经有了问题,并且能够逃出去?

您可以使用PHP函数
number\u format()

有关详细信息,您可以转到

以“取消格式化”字符串,您可以使用

格式化字符串示例:

$fmt = new NumberFormatter( 'en_US', NumberFormatter::DECIMAL );
$int = $fmt->parse("67,450");
$fmt = new NumberFormatter( 'de_DE', NumberFormatter::DECIMAL );
echo $fmt->format($int);
这将为您提供原始整数,例如,
$int
中的67450

然后您可以使用
number\u格式

手册中的示例:

$fmt = new NumberFormatter( 'en_US', NumberFormatter::DECIMAL );
$int = $fmt->parse("67,450");
$fmt = new NumberFormatter( 'de_DE', NumberFormatter::DECIMAL );
echo $fmt->format($int);
然后得到67.450(用一个点作为千位分隔符)

请注意,格式取决于区域设置。虽然一个地区的区域部分可能指向欧洲,但它本身并不是一个有效的地区。英国人使用逗号作为千位分隔符(67450),法国人使用空格(67450),德国人使用点(67.450)

有关解析和格式化数字的详细信息,请参阅:


编辑:@Gordon♦我们的解决方案应该是最好的

这不是最快的方法,但它应该有效:

$usInt = '67,450';
$explode = explode(',', $usInt);
$euInt = '';

foreach ($explode as $val) {
    $euInt .= $val;
}

echo $euInt;

如果
str\u replace
被禁止,那么
preg\u replace
怎么样?这可能会有帮助,这是关于钱的,但它是一样的。。。提出这些要求的客户机不使用str_replace()或preg_replace()等函数。由于int recovered是手动写入的,因此如果使用“str_replace”并且用户出错,则会出现问题。如果您只是将U.S.格式化为EU,那么就不会有出错的风险。好吧,您还是希望在代码中加入一些错误检查。没有神奇的傻瓜式解决方案。我不能这样做,因为我获取的int已经被写入,我不能对用户说“这是错误的”。你不能将逗号分隔的数字传递给这个函数。我认为这不起作用:因为根据你链接的文档,
number\u format
要求第一个参数是浮点,而不是字符串。