数字格式化程序与序号的行为不一致

Inconsistent behaviour for number formatter with ordinal

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

这是我的代码:

<?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ˢᵗ"

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

PHP5.6.20 安装使用 ICU 版本 4.8.1.1,而 5.6.14 使用 ICU 版本 4.4.0.1

我只想升级到更新的 ICU。

奇怪的上标在 CLDR 2.0 It was introduced in this ticket 年前被修复了。我不确定是哪个 CLDR 版本引入了它,但不幸的是我的名字作为审阅者出现了。也许在当时看来是个好主意。

这是来自 CLDR 的数据而不是代码,通常我们不会为每个数据更改创建一个更改日志条目。