downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

NumberFormatter::formatCurrency> <NumberFormatter
Last updated: Fri, 13 Nov 2009

view this page in

NumberFormatter::create

numfmt_create

NumberFormatter::__construct

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

NumberFormatter::create -- numfmt_create -- NumberFormatter::__construct数値フォーマッタを作成する

説明

オブジェクト指向型 (メソッド)

static NumberFormatter NumberFormatter::create ( string $locale , int $style [, string $pattern ] )

手続き型

NumberFormatter numfmt_create ( string $locale , int $style [, string $pattern ] )

オブジェクト指向型 (コンストラクタ):

NumberFormatter::__construct ( string $locale , int $style [, string $pattern ] )

数値フォーマッタを作成します。

パラメータ

locale

数値フォーマットするロケール (ロケール名。たとえば en_CA)。

style

フォーマットの形式。 フォーマット形式 定数のいずれか。 NumberFormatter::PATTERN_DECIMAL あるいは NumberFormatter::PATTERN_RULEBASED を指定した場合は指定したパターンの数値フォーマットをオープンします。 これは、それぞれ » ICU DecimalFormat ドキュメント あるいは » ICU RuleBasedNumberFormat ドキュメント で述べられている構文を満たす必要があります。

pattern

選択した形式がパターンを要求するものである場合のパターン文字列。

返り値

NumberFormatter オブジェクト、 あるいはエラー時に FALSE を返します。

例1 numfmt_create() の例

<?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";
?>

例2 NumberFormatter::create() の例

<?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";
?>

上の例の出力は以下となります。

1.234.567,891
millicentoquarantadue

参考



add a note add a note User Contributed Notes
NumberFormatter::create
F. Poirotte
15-Nov-2009 04:26
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.

NumberFormatter::formatCurrency> <NumberFormatter
Last updated: Fri, 13 Nov 2009
 
 
show source | credits | stats | sitemap | contact | advertising | mirror sites