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
string
int
int
): int|float|false
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::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
参考
- numfmt_get_error_code() - フォーマッタの直近のエラーコードを取得する
- numfmt_format() - 数値をフォーマットする
- numfmt_parse_currency() - 通貨をパースする
+add a note
User Contributed Notes 2 notes
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.
Rakasch ¶
6 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"
↑ and ↓ to navigate •
Enter to select •
Esc to close
Press Enter without
selection to search using Google