1

私は今日、最も奇妙なことに遭遇しました。どうしたらよいかわかりません。

これが私のコードです:

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

このコードは、PHP バージョン 5.6.20 で次を出力します。

文字列(3) "1番目"

ただし、PHP バージョン 5.6.14 では次のように出力されます。

string(6) "1ˢᵗ"

これをどうすればいいのかわからない。上付きのバージョンは、私が期待していなかったものです。変更ログを確認しましたが、この変更が文書化されていません。これが意図された動作であるかどうかは誰にも分かりますか? 最初の動作に強制的に戻す方法はありますか (フォームでレンダリングすると奇妙に見えるため)?

PHP 5.6.20 のインストールでは ICU バージョン 4.8.1.1 を使用し、5.6.14 では ICU バージョン 4.4.0.1 を使用しています。

4

1 に答える 1

1

新しい ICU にアップグレードするだけです。

奇妙な上付き文字は、 CLDR 2.0で修正されました。これは、数年前にこのチケットで導入されました。どの CLDR バージョンで導入されたかはわかりませんが、残念ながらレビュアーとして私の名前が載っています。たぶん、当時は良いアイデアのように思えました。

これはCLDRからのデータであり、コードではありません。通常、データの変更ごとに変更ログ エントリを作成しません。

于 2016-07-19T21:29:12.393 に答える