数字格式化程序与序数

时间:2016-05-13 11:15:37

标签: php internationalization number-formatting icu numberformatter

我今天遇到了最奇怪的事情,我不知道该怎么做。

这是我的代码:

<?php 
$nf = new \NumberFormatter("en_UK", \NumberFormatter::ORDINAL);
die(var_dump($nf->format(1)));

此代码在PHP 5.6.20版中输出以下内容:

  

string(3)“1st”

但它在PHP 5.6.14版中输出以下内容:

  

string(6)“1ˢᵗ”

我不知道该怎么做。上标版本是我没想到的。我查看了更改日志但未记录此更改。任何人都知道这是否是预期的行为?任何方式强制它回到第一个行为(因为它在表单中呈现时看起来很奇怪)?

PHP 5.6.20安装使用ICU版本4.8.1.1而5.6.14使用ICU版本4.4.0.1

1 个答案:

答案 0 :(得分:1)

我只是升级到更新的ICU。

奇怪的上标在CLDR 2.0修复了。它是在this ticket年前引入的。我不确定哪个CLDR版本引入了它,但不幸的是我的名字作为评论者。也许这在当时似乎是一个好主意。

这是来自CLDR的数据,而不是代码,通常我们不会为每次数据更改生成更改日志条目。