小编nof*_*ame的帖子

如何更改接受空格和非空格的NumberFormatter :: parseCurrency()行为?

我正在尝试将本地化的货币字符串解析为货币和浮动值.

一切都运作良好,现在我们遇到了一些问题.看起来NumberFormatter :: parseCurrency使用了一个额外的不可见字符:

Testcode:

<?php
$formatter = new NumberFormatter("de_DE", NumberFormatter::CURRENCY);
var_dump(array(
    $formatter->parseCurrency("88,22 €", $curr), // taken from output of $formatter->format(88.22)
    $formatter->parseCurrency("88,22 €", $curr), // input with keyboard
    $formatter->parseCurrency("88,22 \xE2\x82\xAc", $curr), // just a test
    $formatter->format(88.22),
    "88,22 €" // keyboard input
));
Run Code Online (Sandbox Code Playgroud)

输出:

array(5) {
  [0]=> float(88,22)
  [1]=> bool(false)
  [2]=> bool(false)
  [3]=> string(10) "88,22 €" // this as input works
  [4]=> string(9) "88,22 €" // this not...
}
Run Code Online (Sandbox Code Playgroud)

如您所见,输出3和4的字符串长度存在差异.

我在PHP 5.3(启用了mbstring的ubuntu)和5.4(Mac OS X上的Zend Server)中得到了相同的结果.

主要问题是,来自我的表单(ZF1应用程序)的输入值与索引4的输出相同...

有什么建议?提前致谢

EDIT1:

工作价值的hexdump:

00000000  38 …
Run Code Online (Sandbox Code Playgroud)

php icu numberformatter intl

9
推荐指数
1
解决办法
1190
查看次数

标签 统计

icu ×1

intl ×1

numberformatter ×1

php ×1