If I'd like to display a given number as ordinal number, I'd do it like this:
<?php
// Needs 'php5-intl' package to be installed on Debian/Ubuntu
$set_format = numfmt_create( 'en_US', NumberFormatter::ORDINAL );
// '3' is displayed as '3rd'
echo numfmt_format( $set_format, 3 );
?>
But if I'd like to display a given number as ordinal number in word form (e.g. first, second, third, etc.) using a built-in PHP function/class like NumberFormatter
, how do I do that? Is it possible?
Related Links:
http://www.php.net/manual/en/class.numberformatter.php
http://www.php.net/manual/en/numberformatter.create.php
http://www.php.net/manual/en/numberformatter.format.php
You want to be using the SPELLOUT
format style, rather thanORDINAL
.
The next problem is how to tell the formatter to use the particular ruleset that you are interested in; namely %spellout-ordinal
. This can be done by using setTextAttribute()
.
Example
$formatter = new NumberFormatter('en_US', NumberFormatter::SPELLOUT);
$formatter->setTextAttribute(NumberFormatter::DEFAULT_RULESET,
"%spellout-ordinal");
for ($i = 1; $i <= 5; $i++) {
echo $formatter->format($i) . PHP_EOL;
}
Output
first
second
third
fourth
fifth
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With