NumberFormatter::create

numfmt_create

NumberFormatter::__construct

(PHP 5 >= 5.3.0, PHP 7, PECL intl >= 1.0.0)

NumberFormatter::create -- numfmt_create -- NumberFormatter::__constructBir sayı biçemleyici oluşturur

Açıklama

Nesne yönelimli kullanım

static NumberFormatter NumberFormatter::create ( string $yerel , int $tür [, string $kalıp ] )

Yordamsal kullanım

NumberFormatter numfmt_create ( string $yerel , int $tür [, string $kalıp ] )

Nesne yönelimli kullanım (kurucu):

NumberFormatter::__construct ( string $yerel , int $tür [, string $kalıp ] )

Bir sayı biçemleyici oluşturur.

Değiştirgeler

yerel

Sayının biçemleneceği yerel (tr_TR gibi bir yerel ismi).

tür

Biçemleyici türü sabitlerinden biri. Eğer değer olarak NumberFormatter::PATTERN_DECIMAL veya NumberFormatter::PATTERN_RULEBASED belirtilmişse, sayı biçemi, numfmt_set_pattern tarafından desteklenen kalıp karakterlerine veya » ICU RuleBasedNumberFormat belgesinde açıklanan sözdizimine uygun olarak belirtilen kalıba uygun olarak açılır.

kalıp

Biçemleyici türünün bir kalıp gerektirmesi durumunda kalıp dizgesi.

Dönen Değerler

Bir hata oluşursa FALSE, aksi takdirde NumberFormatter nesnesi döner.

Örnekler

Örnek 1 - numfmt_create() örneği

<?php
$fmt 
numfmt_create'de_DE'NumberFormatter::DECIMAL );
echo 
numfmt_format($fmt1234567.891234567890000)."\n";
$fmt numfmt_create'it'NumberFormatter::SPELLOUT );
echo 
numfmt_format($fmt1142)."\n";
?>

Örnek 2 - Nesne yönelimli kullanım örneği

<?php
$fmt 
= new NumberFormatter'de_DE'NumberFormatter::DECIMAL );
echo 
$fmt->format(1234567.891234567890000)."\n";
$fmt = new NumberFormatter'it'NumberFormatter::SPELLOUT );
echo 
$fmt->format(1142)."\n";
?>

Yukarıdaki örneğin çıktısı:

1.234.567,891
millicentoquarantadue

Ayrıca Bakınız

add a note add a note

User Contributed Notes 2 notes

up
2
daniel dot rhodes at warpasylum dot co dot uk
6 years ago
It should be noted that the locale string passed into NumberFormatter's constructor doesn't play with UCA keywords quite as readily as, say, the Collator and IntlDateFormatter classes' constructors.

According to the Unicode spec (http://www.unicode.org/reports/tr35), I should be able to specify a locale of "ja_JP@numbers=jpanfin" which, for spellout mode, should give me Japanese financial (ie. anti-forgery) numerals. When passed into NumberFormatter's constructor, "ja_JP@numbers=jpanfin" doesn't work.

However, when I look at a dump of NumberFormatter::getPattern() for the ja_JP locale, I see that the financial numerals *are* in there (as %financial). Here's how we wrangle them out of the NumberFormatter:

<?php
$number
= 1234567890;

$formatter = new NumberFormatter('ja_JP', NumberFormatter::SPELLOUT);

$formatter->setTextAttribute(NumberFormatter::DEFAULT_RULESET, "%financial");

echo
$formatter->format($number);
//above gives [拾弐億参千四百伍拾六萬七千八百九拾] (as opposed to [十二億三千四百五十六万七千八百九十]) - bingo!
?>
up
2
F. Poirotte
8 years ago
When formatting durations using the NumberFormatter::DURATION type, you may also need to use NumberFormatter::setTextAttribute to get the desired output.

<?php

$fmt
= new NumberFormatter('en', NumberFormatter::DURATION);
// Outputs: string(7) "3:25:45"
var_dump($fmt->format(12345));

// "%in-numerals" is the default ruleset, so this results in the same as above.
$fmt->setTextAttribute(NumberFormatter::DEFAULT_RULESET, "%in-numerals");
// Outputs: string(7) "3:25:45"
var_dump($fmt->format(12345));

$fmt->setTextAttribute(NumberFormatter::DEFAULT_RULESET, "%with-words");
// Outputs: string(31) "3 hours, 25 minutes, 45 seconds"
var_dump($fmt->format(12345));

$fmt2 = new NumberFormatter('fr', NumberFormatter::DURATION);
// Outputs: string(7) "12 345"
// See notes below.
var_dump($fmt2->format(12345));

?>

This is a little counter-intuitive because there is not much doc available about the DURATION type.

Also, as far as I can tell, only the English (en) locale has support for the "%in-numerals" & "%with-words" rulesets. Other locales seem to simply format the input as if the DECIMAL type had been used (at least using "fr" or "de" as the target locale).

One way to provide that feature across different locales is to extract the ruleset implicitely used by NumberFormatter::DURATION and adapt it for the locales you're targetting. Use NumberFormatter::getPattern to extract the ruleset.
To Top