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


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版本6.5.14中输出以下内容:

string(6)"1ˢᵗ"

我不知道该怎么办。上标的版本是我没想到的。我查看了更改日志,但没有看到此更改的文档。有人知道这是不是故意的行为吗?有没有办法强迫它回到第一种行为(因为在以形式呈现它时看起来很奇怪)?

PHP 5.6.20安装使用的是ICU版本4.8.1.1,而B6.4使用的是重症监护室版本4.4.0.1

我只想升级到一个新的重症监护室。

这个奇怪的上标在CLDR 2.0中得到了修复。它是几年前在这个票证中引入的。我不确定是哪一个CLDR版本引入了它,但不幸的是,我的名字是评审员。也许这在当时看起来是个好主意。

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