我喜欢将带有价格的字符串转换为浮点值。价格来自不同的语言和国家,可能如下所示:
1,00 €
€ 1.00
1'000,00 EUR
1 000.00$
1,000.00$
1.000,00 EURO
或者任何你能想到的...
不确定我的示例是否包含所有可能性。我也不确定是否可以盲目地进行国际转换,也许我必须使用语言代码?所以一开始欧元和美元就足够了。
floatval()
有点蠢所以我需要更多的东西。我想我应该首先删除数字、、
和 .
旁边的所有字符。然后修复 ,
/.
并最终使用 floatval。
有没有人以前做过这个,可以帮我一点忙吗?
我更喜欢没有正则表达式的解决方案;)
最佳答案
好的,我自己试过了。你怎么看这个?
function priceToFloat($s){
// is negative number
$neg = strpos((string)$s, '-') !== false;
// 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);
// Set negative number
if( $neg ) {
$s = '-' . $s;
}
// return float
return (float) $s;
}
这里有一些测试:http://codepad.org/YtiHqsgz
对不起。我无法包含其他功能,因为键盘不喜欢它们。但我比较了它们,发现像“22 000,76”或“22.000”这样的字符串有问题
更新:作为Limitless isa指出您可能会查看内置函数 money-format .
关于php - 要 float 的价格字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9110525/