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, 20 May 2011

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::__constructCreate a number formatter

Descripción

Object oriented style (method)

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

Procedural style

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

Object oriented style (constructor):

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

Creates a number formatter.

Parámetros

locale

Locale in which the number would be formatted (locale name, e.g. en_CA).

style

Style of the formatting, one of the format style constants. If NumberFormatter::PATTERN_DECIMAL or NumberFormatter::PATTERN_RULEBASED is passed then the number format is opened using the given pattern, which must conform to the syntax described in » ICU DecimalFormat documentation or » ICU RuleBasedNumberFormat documentation, respectively.

pattern

Pattern string in case chosen style requires pattern.

Valores devueltos

Returns NumberFormatter object or FALSE on error.

Ejemplos

Example #1 numfmt_create() example

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

Example #2 NumberFormatter::create() example

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

El resultado del ejemplo sería:

1.234.567,891
millicentoquarantadue

Ver también



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.

 
show source | credits | stats | sitemap | contact | advertising | mirror sites