PHP Conference Nagoya 2025

NumberFormatter::parse

numfmt_parse

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

NumberFormatter::parse -- numfmt_parseAnalyse un nombre

Description

Style orienté objet

public NumberFormatter::parse(string $string, int $type = NumberFormatter::TYPE_DOUBLE, int &$offset = null): int|float|false

Style procédural

numfmt_parse(
    NumberFormatter $formatter,
    string $string,
    int $type = NumberFormatter::TYPE_DOUBLE,
    int &$offset = null
): int|float|false

Analyse une chaîne et extrait un nombre, à l'aide des règles du formateur.

Liste de paramètres

formatter

L'objet NumberFormatter.

string

La chaîne à analyser pour le nombre.

type

Le type de format à utiliser. Par défaut, NumberFormatter::TYPE_DOUBLE est utilisée. Notez que NumberFormatter::TYPE_CURRENCY n'est pas pris en charge ; utilisez NumberFormatter::parseCurrency() à la place.

offset

La position de début d'analyse dans la chaîne. En retour, cette valeur contiendra la position de fin d'analyse.

Valeurs de retour

La valeur de nombre analysé, ou false en cas d'erreur.

Exemples

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

<?php
$fmt
= numfmt_create( 'de_DE', NumberFormatter::DECIMAL );
$num = "1.234.567,891";
echo
numfmt_parse($fmt, $num)."\n";
echo
numfmt_parse($fmt, $num, NumberFormatter::TYPE_INT32)."\n";
?>

Exemple #2 Exemple avec numfmt_parse(), style POO

<?php
$fmt
= new NumberFormatter( 'de_DE', NumberFormatter::DECIMAL );
$num = "1.234.567,891";
echo
$fmt->parse($num)."\n";
echo
$fmt->parse($num, NumberFormatter::TYPE_INT32)."\n";
?>

L'exemple ci-dessus va afficher :

1234567.891
1234567

Voir aussi

add a note

User Contributed Notes 2 notes

up
5
rdohms at php dot net
12 years ago
It interesting to note that the expected behavior for this function may change according to your ICU version.

In ICU 4.4.2 (standard for Ubuntu 10.* with PHP 5.3.5)

With locale 'en', input of 100,1 returns 1001

In ICU 4.8.1 (standard for Ubuntu 12.* with PHP 5.3.10)

With locale 'en', input of 100,1 returns "false"

Be sure to note your ICU version in phpinfo() to be sure you will get the expected output.
up
4
Rakasch
5 years ago
'en_EN':

basically the first part is the language and the second part the region:
'en_EN' - english, England
'en_US' - english, United States

You can lookup the language tags like 'en_EN' here:
https://datahub.io/core/language-codes
see "ietf-language-tags"
To Top