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_parseРазбирает число

Описание

Объектно-ориентированный стиль

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

Процедурный стиль

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

Преобразовывает строку в число по правилам средства форматирования.

Список параметров

formatter

Объект NumberFormatter.

string

Строка для разбора числа.

type

Используемый тип форматирования. По умолчанию используется NumberFormatter::TYPE_DOUBLE. Обратите внимание, что константа NumberFormatter::TYPE_CURRENCY не поддерживается; воспользуйтесь вместо неё методом NumberFormatter::parseCurrency().

offset

Смещение в строке, с которой начинается синтаксический анализ. При возврате это значение будет содержать смещение, на котором закончился синтаксический анализ.

Возвращаемые значения

Возвращает значение анализируемого числа или логическое значение false в случае возникновения ошибки.

Примеры

Пример #1 Пример использования 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";
?>

Пример #2 Пример использования в объектно-ориентированном стиле

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

Результат выполнения приведённого примера:

1234567.891
1234567

Смотрите также

Добавить

Примечания пользователей 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