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

2023-11-22

有没有办法获取字符串的浮点值,如下所示:75,25 €, 以外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);
}

Tests:

['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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 PHP 中解析时取消货币格式 的相关文章

随机推荐

  • JavaFX TreeView 的多种对象类型? (和更多)

    我目前有以下对象数据结构 Item 字符串名称 信息的数组列表 特点 字符串名称 收集Item Account 字符串名称 收集特点 最多 8 个 我想制作一个如下所示的 TreeView Root invisible Jake Accou
  • 在 Linux 上使用 Mono 运行 SignalR .Net 客户端 - 可能吗?

    有谁有运行经验SignalR net 客户端在单声道上 我正在考虑将其用于需要运行跨平台的进程 需要连接到互联网托管的 SignalR Hub 我创建了一个在 mono 框架下使用 signalr 客户端工作的示例项目 https gith
  • PHP访问控制系统

    我是使用 PHP 和 MySQL 创建 Web 应用程序的团队的一员 该应用程序将有多个具有不同角色的用户 该应用程序还将以地理分布的方式使用 因此 我们需要创建一个在以下两个级别运行的访问控制系统 控制特定 php 页面的用户权限 即根据
  • 三次贝塞尔曲线上的最近点?

    如何沿着三次贝塞尔曲线找到最接近平面上任意点 P 的点 B t 我编写了一些快速而简单的代码来估计任意阶贝塞尔曲线的这一点 注意 这是伪暴力 而不是封闭式解决方案 Demo http phrogz net svg closest point
  • 使用 EclipseLink MOXy (JAXB) 将子类编组为 JSON 时是否可以隐藏“@type”条目?

    我即将开发一个基于 JAX RS 的 RESTful Web 服务 并使用 MOXy JAXB 来自动生成 Web 服务的 JSON 响应 一切都很酷 但由于 Web 服务将是基于 JavaScript 的 Web 应用程序的后端 因此可以
  • 具有提升权限的 CreateProcessAsUser

    我的服务在本地系统权限下运行 需要在用户会话中启动具有管理员权限的应用程序 我得到的是 WTSGetActiveConsoleSessionID WTSQueryUserToken用于会话 ID CreateProcessAsUser 问题
  • 让 Discord Bot 在 repl.it 上保持在线

    我该如何使用repl it对于我的 Python Discord Bot 并保持其 24 7 运行 我以前用过keep alive但由于某种原因它停止工作 有没有人有什么建议 我不断在控制台中收到此错误 172 18 0 1 2019 年
  • Python 的 site-packages 目录是什么?

    目录site packages在各种Python相关文章中都提到过 它是什么 我该如何使用它 site packages is the 目标目录手动构建的 Python 包 当您从源代码构建并安装 Python 包时 使用迪斯图尔斯 可能通
  • 如何从 Visual Code 中的快速打开菜单打开多个文件?

    我想知道是否可以从 Visual Code 中的快速打开菜单中打开多个文件 使用cmd p默认快捷方式 如果能够选择结果中的前 N 个文件并立即打开它们 将会很有帮助 例如 我可以输入 test device js 并且可以打开前 3 个文
  • Prolog 中的幂函数

    我的电源功能出了什么问题 pow 0 1 pow X Y Z pow X Y 1 X Z pow 2 3 Z ERROR Out of global stack 你的 Y 不会递减 你不能使用像函数这样的谓词 您还必须将 Z 与乘法结果统一
  • 如何在Django的同一页面上插入2个不同的表单

    我必须在同一页面中插入两个表单 1 登记表 2 登录表格 所以如果我在views py中使用它 if request method POST form registrationForm request POST if form is val
  • 不可变类和子类

    我正在尝试了解可变 不可变类 我遇到了这个帖子 提供的部分答案是 如果你想强制不变性 你就不能有子类 看 例如 java lang String 由于这个原因它是最终类 防止人们对 String 进行子类化以使其可变 好吧我明白了but 你
  • 在 Java 中 Jackson JSON 反序列化期间忽略丢失的属性

    在示例中 class Person String name int age 如果 JSON 对象缺少属性 age name John Person person objectMapper readValue jsonFileReader P
  • 可以授予一台计算机上的“网络服务”对另一台计算机上的目录的权限吗?

    我有一个文件 Computer1 Share file pdf 我需要使用在另一台计算机上作为网络服务帐户运行的服务来打开 Computer2 NETWORK SERVICE FWIW 两者Computer1 and Computer2位于
  • 在除一侧之外的所有侧面上创建 CSS3 框阴影

    我有一个选项卡式导航栏 我希望打开的选项卡有一个阴影 以将其与其他选项卡区分开来 我还希望整个选项卡部分有一个向上的阴影 参见底部水平线 遮蔽除打开的选项卡之外的所有选项卡的底部 我将使用 CSS3box shadow财产来做到这一点 但我
  • 在 ASP.NET 页面中包含脚本的正确方法

    我有一个 ASP NET 应用程序 它混合使用了由不同背景的几位开发人员编写的 ASP NET AJAX 包括 UpdatePanel 和 jQuery 一些包含在 ScriptManager 本身中的脚本
  • PHP 如何将标题定位到父目录中的页面?

    我有一个first php页面与 header Location script script1 php and script1 php还有另一个 header Location first php 但这显然让我 script first p
  • 使用 ACTION_SEND 共享文本文件

    我们可以使用 ACTION SEND 打开共享对话框来共享文本 Intent sendIntent new Intent sendIntent setAction Intent ACTION SEND sendIntent putExtra
  • Xcode -dynamic 未指定静态库错误

    我在 Xcode 中有一个子项目 它创建一个由父项目引用的静态库 一切都很好 直到 iOS 7 1 和 Xcode 5 1 发布 突然我收到以下警告 Applications Xcode app Contents Developer Too
  • 在 PHP 中解析时取消货币格式

    有没有办法获取字符串的浮点值 如下所示 75 25 以外parsefloat str replace var 我希望这取决于当前的站点语言 有时逗号可以用点代替 这是一个稍微复杂 缓慢的解决方案 但适用于所有区域设置 rlenom 的解决方