PHP Conference Japan 2024

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

以上示例将输出

1234567.891
1234567

参见

添加注释

用户贡献注释 2 条注释

5
rdohms at php dot net
12 年前
值得注意的是,此函数的预期行为可能会根据您的 ICU 版本而改变。

在 ICU 4.4.2(Ubuntu 10.* 和 PHP 5.3.5 的标准)中

使用语言环境“en”,输入 100,1 返回 1001

在 ICU 4.8.1(Ubuntu 12.* 和 PHP 5.3.10 的标准)中

使用语言环境“en”,输入 100,1 返回“false”

请务必注意 phpinfo() 中的 ICU 版本,以确保您获得预期的输出。
4
Rakasch
5 年前
'en_EN'

基本上,第一部分是语言,第二部分是区域
'en_EN' - 英语,英格兰
'en_US' - 英语,美国

您可以在此处查找像“en_EN”这样的语言标签
https://datahub.io/core/language-codes
参见“ietf-language-tags”
To Top