©
This document uses PHP Chinese website manual Release
(PHP 5 >= 5.3.0, PECL intl >= 1.0.0)
NumberFormatter::parse -- numfmt_parse — Parse a number
面向对象风格
$value
[, int $type
[, int &$position
]] )过程化风格
$fmt
, string $value
[, int $type
[, int &$position
]] )Parse a string into a number using the current formatter rules.
fmt
NumberFormatter object.
type
The
formatting type to use. By default,
NumberFormatter::TYPE_DOUBLE
is used.
position
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 , $num , NumberFormatter :: 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 ( $num , NumberFormatter :: TYPE_INT32 ). "\n" ;
?>
以上例程会输出:
1234567.891 1234567
[#1] rdohms at php dot net [2012-07-06 11:53:22]
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.