我喜欢将带有价格的字符串转换为浮点值.价格来自不同的语言和国家,可能如下所示:
1,00 €
€ 1.00
1'000,00 EUR
1 000.00$
1,000.00$
1.000,00 EURO
Run Code Online (Sandbox Code Playgroud)
或者你能想到的......
我不确定我的例子中有多种可能性.我也不确定是否有可能盲目进行国际转换,也许我必须使用语言代码?所以一开始欧元和美元就足够了.
floatval()有点傻,所以我需要更多的东西.我想我应该首先删除数字旁边的所有字符,,然后..然后修复,/ .并最终使用floatval.
有人曾经这样做过,可以帮我一点吗?
我更喜欢没有正则表达式的解决方案;)
PiT*_*ber 15
好的,我自己试了一下.你觉得这怎么样?
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, 0, -3)) . substr($s, -3);
// return float
return (float) $s;
}
Run Code Online (Sandbox Code Playgroud)
这里有一些测试:http://codepad.org/YtiHqsgz
抱歉.我无法包含其他功能,因为键盘不喜欢它们.但是我对它们进行了比较,并且遇到了像"22 000,76"或"22.000"这样的字符串的问题.