我正在尝试将本地化的货币字符串解析为货币和浮动值.
一切都运作良好,现在我们遇到了一些问题.看起来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)