【发布时间】:2016-07-08 13:58:08
【问题描述】:
我有一个 Symfony 2.5 项目,我试图在后端实现货币验证。出于这个原因,PHP 国际化库中的 NumberFormatter 类可以解析所有必要的输入。出于某种原因,尽管 parse() 方法总是返回 false。
代码示例:
private $numberFormatter;
function __construct()
{
$this->numberFormatter =
new \NumberFormatter("en-US", \NumberFormatter::CURRENCY);
}
//....
public function getDataAction(Request $request)
{
$newValue = $this->numberFormatter->parse(
$request->get('some_value')
);
//....
}
真的没有什么特别的。
intl 和 mbstring 扩展都已安装并正在运行 - 使用 phpinfo();
我使用的是 PHP5.6,国际版本是 1.1.0,没有 default_locale(但我尝试将其设置为 en-US,但没有任何改变)。另外,我在 Ubuntu 16.04 上,使用 MySQL 5.7.12 和 Apache2。
我已经在这里和网上查找了解决方案,但没有得到任何解决方案。可以帮忙吗,谢谢?
【问题讨论】:
-
$request->get('some_value')的结果是什么? -
@ShiraNai7 来自表单的 int 值,例如。 400
-
@ShiraNai7 刚刚尝试使用
$this->numberFormatter->parse( (string) $request->get('some_value') )和$this->numberFormatter->parse( (int) $request->get('some_value') )强制 parse() 但又一次 - 没有运气。 -
我认为可能是这样。看我的回答。
标签: php internationalization number-formatting symfony-2.5