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

参见

添加注释

用户贡献的注释 3 则注释

Rakasch
5 年前
'en_EN'

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

您可以在此处查找“en_EN”之类的语言标签
https://datahub.io/core/language-codes
参见“ietf-language-tags”
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 版本,以确保您获得预期的输出。
helium73b at gmail dot com
7 年前
要解析英语,请使用此格式:'en_EN'。我不得不猜。我不知道在哪里可以找到这些代码。

<?php
echo "<pre>";
$fmt = numfmt_create( 'en_EN', NumberFormatter::DECIMAL );
$num = "1,234,567.891";
echo
numfmt_parse($fmt, $num)."\n";
echo
numfmt_parse($fmt, $num, NumberFormatter::TYPE_INT32)."\n";
echo
"</pre>";
?>

如果这不起作用,我只能说它不应该起作用,因为在一个代码中重复两次代码“en 和 EN”没有任何意义。没有意义的东西很难猜测。我也没有找到包含这些代码的页面。我想文档必然不完整,因为它太庞大了。文档有其自身的语言和语法,但没有关于理解文档的教程。
To Top