如何在 PHP 中解析未格式化的货币值?

Barbara Streisand
发布: 2024-11-12 22:27:01
原创
372 人浏览过

How to Parse Unformatted Monetary Values in PHP?

在 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板