在 PHP 中解析未格式化的货币值
尝试将表示为字符串的货币值(例如“75,25 €”)解析为对于它们的数字等价物,仅依赖使用 parsefloat() 方法可能并不总是足够。为了解决此限制并确保跨不同区域设置和分隔符格式的灵活性,需要更复杂的解决方案。
该解决方案利用正则表达式来提取数值,考虑货币金额中使用的各种可能的分隔符和格式。给定输入字符串,首先使用 preg_replace() 删除不必要的字符。随后的正则表达式操作会识别并删除分隔符和千位分隔符,从而生成一个数字字符串。
最后,清理后的字符串将接受标准的 str_replace() 操作,以在转换为浮点数之前将小数点分隔符统一为句点使用(浮动)。这种综合方法将点和逗号作为小数分隔符处理,确保无论语言环境如何都能准确解析。
这里有一个示例来说明该过程:
<?php 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); }
通过这种方法,您可以自信地解析未格式化的货币字符串,无论语言和格式约定如何,都可以获得可靠的数值。
以上是如何在 PHP 中解析未格式化的货币值?的详细内容。更多信息请关注PHP中文网其他相关文章!