2

我得到一个美国格式的 int 。

$UsInt = "67,450";

我需要将其转换为欧洲格式。

$EuInt = "67450";

我不能用str_replace()virgule 来代替。不使用str_replace()是强制性存款。

我不能使用number_format(),因为我不能将逗号分隔的数字传递给这个函数

会存在一个PHP函数来做到这一点吗?还是有人已经遇到问题并且能够摆脱困境?

4

3 回答 3

3

您可以使用 PHP 函数number_format()

  $EuInt = number_format($UsInt)

有关更多信息,您可以前往PHP 手册

于 2013-11-06T10:13:02.903 回答
3

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

格式化字符串的示例:

$fmt = new NumberFormatter( 'en_US', NumberFormatter::DECIMAL );
$int = $fmt->parse("67,450");

这将为您提供原始整数,例如 67450 in $int

然后你可以使用number_format或使用

手册中的示例:

$fmt = new NumberFormatter( 'de_DE', NumberFormatter::DECIMAL );
echo $fmt->format($int);

然后将给出 67.450(以点作为千位分隔符)。

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

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

于 2013-11-06T10:20:18.600 回答
2

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

不是最快的方法,但它应该工作:

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

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

echo $euInt;
于 2013-11-06T10:23:37.953 回答