我喜欢将带有价格的字符串转换为浮点值.价格来自不同的语言和国家,可能如下所示:
1,00 € € 1.00 1'000,00 EUR 1 000.00$ 1,000.00$ 1.000,00 EURO
或者你能想到的任何……
我不确定我的例子中有多种可能性.我也不确定是否有可能盲目进行国际转换,也许我必须使用语言代码?所以一开始欧元和美元就足够了.
floatval()有点傻,所以我需要更多东西.我想我应该首先删除数字旁边的所有字符,然后..然后修复,/.并最终使用floatval.
有人之前做过这件事,可以帮我一点吗?
我更喜欢没有正则表达式的解决方案;)
好的,我自己尝试过.你觉得这怎么样?
function priceToFloat($s) { // convert "," to "." $s = str_replace(',','.',$s); // remove everything except numbers and dot "." $s = preg_replace("/[^0-9\.]/","",$s); // remove all seperators from first part and keep the end $s = str_replace('.','',substr($s,-3)) . substr($s,-3); // return float return (float) $s; }
这里有一些测试:http://codepad.org/YtiHqsgz
抱歉.我无法包含其他功能,因为键盘不喜欢它们.但是我对它们进行了比较,并且遇到了像“22 000,76”或“22.000”这样的字符串的问题.
更新:正如Limitless isa所指出的那样,您可以查看功能money-format中的构建.