要浮动的价格字符串

PiT*_*ber 8 php

我喜欢将带有价格的字符串转换为浮点值.价格来自不同的语言和国家,可能如下所示:

 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"这样的字符串的问题.

更新:AsAs指出你可能会看一下功能货币格式的构建.