NumberFormatter::parse

numfmt_parse

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

NumberFormatter::parse -- numfmt_parseParse a number

说明

面向对象风格

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

Parse a string into a number using the current formatter rules.

参数

formatter

NumberFormatter object.

string

The string to parse for the number.

type

The formatting type to use. By default, NumberFormatter::TYPE_DOUBLE is used.

offset

Offset in the string at which to begin parsing. On return, this value will hold the offset at which parsing ended.

返回值

The value of the parsed number or false on error.

范例

Example #1 numfmt_parse() example

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

Example #2 OO example

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

以上例程会输出:

1234567.891
1234567

参见

User Contributed Notes

Rakasch 18-Dec-2018 11:41
'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"
helium73b at gmail dot com 21-Feb-2017 10:33
to parse English use this format: 'en_EN' .  I had to guess.  I have no idea where you would find these codes.

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

If this doesn't work well all I can say is it shouldn't work because it makes no sense that  you would repeat the code twice "en and EN" in one code.  Stuff that makes no sense is hard to guess.   I couldn't find a page that has these codes either.  I guess documentation is bound to be incomplete since it's so voluminous.  Documentation has a language and syntax unto itself yet there are no tutorials on understanding documentation.
rdohms at php dot net 06-Jul-2012 11:53
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.
PHP8中文手册 站长在线 整理 版权归PHP文档组所有