PHP Conference Nagoya 2025

NumberFormatter::setPattern

numfmt_set_pattern

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

NumberFormatter::setPattern -- numfmt_set_patternConfigure le modèle du formateur

Description

Style orienté objet

public NumberFormatter::setPattern(string $pattern): bool

Style procédural

numfmt_set_pattern(NumberFormatter $formatter, string $pattern): bool

Configure le modèle utilisé par le formateur. Ne peut pas être utilisé avec un formateur basé sur les règles.

Liste de paramètres

formatter

L'objet NumberFormatter.

pattern

Le modèle, dans la syntaxe décrite dans la » documentation ICU DecimalFormat.

Valeurs de retour

Cette fonction retourne true en cas de succès ou false si une erreur survient.

Exemples

Exemple #1 Exemple avec numfmt_set_pattern(), Style procédural

<?php
$fmt
= numfmt_create( 'de_DE', NumberFormatter::DECIMAL );
echo
"Modèle : ".numfmt_get_pattern($fmt)."\n";
echo
numfmt_format($fmt, 1234567.891234567890000)."\n";
numfmt_set_pattern($fmt, "#0.# kg");
echo
"Modèle : ".numfmt_get_pattern($fmt)."\n";
echo
numfmt_format($fmt, 1234567.891234567890000)."\n";
?>

Exemple #2 Exemple avec numfmt_set_pattern(), style POO

<?php
$fmt
= new NumberFormatter( 'de_DE', NumberFormatter::DECIMAL );
echo
"Modèle : ".$fmt->getPattern()."\n";
echo
$fmt->format(1234567.891234567890000)."\n";
$fmt->setPattern("#0.# kg");
echo
"Modèle : ".$fmt->getPattern()."\n";
echo
$fmt->format(1234567.891234567890000)."\n";
?>

L'exemple ci-dessus va afficher :

Modèle : #,##0.###
1.234.567,891
Modèle : #0.# kg
1234567,9 kg

Voir aussi

add a note

User Contributed Notes 2 notes

up
18
Crash
4 years ago
If you're looking for the pattern syntax, their documentation is here: http://unicode.org/reports/tr35/tr35-numbers.html#Number_Format_Patterns
up
0
Anonymous
5 years ago
setPattern appears to influence only the behavior of the format method, not the parse method of the NumberFormatter object.

$pattern = '#,##0';
$frmtr = NumberFormatter::create('en-US', NumberFormatter::DECIMAL);
$frmtr->setPattern($pattern);
echo $frmtr->parse('12.345');

// returns 12
To Top