gpt4 book ai didi

php - 在 PHP 中解析时取消格式货币

转载 作者:可可西里 更新时间:2023-10-31 22:52:13 25 4
gpt4 key购买 nike

除了parsefloat(str_replace(',', '.', $var) )

我希望这取决于当前站点语言,有时逗号可以替换为点。

最佳答案

这是一个有点复杂/慢的解决方案,但适用于所有语言环境。 @rlenom 的解决方案仅适用于点作为小数点分隔符,而某些语言环境(如西类牙语)使用逗号作为小数点分隔符。

<?php

public function getAmount($money)
{
$cleanString = preg_replace('/([^0-9\.,])/i', '', $money);
$onlyNumbersString = preg_replace('/([^0-9])/i', '', $money);

$separatorsCountToBeErased = strlen($cleanString) - strlen($onlyNumbersString) - 1;

$stringWithCommaOrDot = preg_replace('/([,\.])/', '', $cleanString, $separatorsCountToBeErased);
$removedThousandSeparator = preg_replace('/(\.|,)(?=[0-9]{3,}$)/', '', $stringWithCommaOrDot);

return (float) str_replace(',', '.', $removedThousandSeparator);
}

测试:

['1,10 USD', 1.10],
['1 000 000.00', 1000000.0],
['$1 000 000.21', 1000000.21],
['£1.10', 1.10],
['$123 456 789', 123456789.0],
['$123,456,789.12', 123456789.12],
['$123 456 789,12', 123456789.12],
['1.10', 1.1],
[',,,,.10', .1],
['1.000', 1000.0],
['1,000', 1000.0]

注意事项:如果小数部分超过两位数则失败。

这是这个库的一个实现: https://github.com/mcuadros/currency-detector

关于php - 在 PHP 中解析时取消格式货币,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7407946/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com