Сегодня я столкнулся со странной вещью, и я не уверен, что с этим делать.
Вот мой код:
<?php
$nf = new \NumberFormatter("en_UK", \NumberFormatter::ORDINAL);
die(var_dump($nf->format(1)));
Этот код выводит следующее в PHP версии 5.6.20:
строка (3) «1-й»
но он выводит следующее в PHP версии 5.6.14:
строка (6) «1ˢᵗ»
Я не уверен, что с этим делать. Версия с надписью — это то, чего я не ожидал. Я просмотрел журналы изменений, но не видел документированных изменений. Кто-нибудь знает, является ли это предполагаемым поведением? Любой способ заставить его вернуться к первому поведению (потому что это выглядит странно при рендеринге в формах)?
При установке PHP 5.6.20 используется версия ICU 4.8.1.1, а в версии 5.6.14 — версия 4.4.0.1.
Я бы просто обновился до более новой ICU.
Странный верхний индекс был исправлен в CLDR 2.0 Это было введено в этот билет лет до. Я не уверен, какая версия CLDR представила его, но, к сожалению, меня зовут рецензентом. Может быть, это казалось хорошей идеей в то время.
Это данные из CLDR и не код, как правило, мы не делаем запись журнала изменений для каждого изменения данных.
Других решений пока нет …