International PHP Conference Berlin 2025

NumberFormatter::parse

numfmt_parse

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

NumberFormatter::parse -- numfmt_parseInterpreta um número

Descrição

Estilo orientado a objetos

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

Estilo procedural

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

Converte uma string em um número usando as regras atuais do formatador.

Parâmetros

formatter

Objeto NumberFormatter.

string

A string a ser convertida para um número.

type

O tipo de formatação a ser usado. Por padrão, NumberFormatter::TYPE_DOUBLE é usado. Observe que NumberFormatter::TYPE_CURRENCY não é suportado; use NumberFormatter::parseCurrency() em seu lugar.

offset

Deslocamento na string a partir do qual a interpretação será iniciada. Ao retornar, este valor conterá o deslocamento no qual a interpretação terminou.

Valor Retornado

O valor numérico convertido ou false em caso de erro.

Exemplos

Exemplo #1 Exemplo de numfmt_parse()

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

Exemplo #2 Exemplo OO

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

O exemplo acima produzirá:

1234567.891
1234567

Veja Também

adicione uma nota

Notas Enviadas por Usuários (em inglês) 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