Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Display number as Ordinal number in 'word form' with NumberFormatter PHP class?

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

like image 678
its_me Avatar asked Oct 16 '13 17:10

its_me


1 Answers

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
like image 103
salathe Avatar answered Oct 02 '22 20:10

salathe