PHP替换字符串中的货币[关闭]

Posted

技术标签:

【中文标题】PHP替换字符串中的货币[关闭]【英文标题】:PHP replace currency in a string [closed] 【发布时间】:2020-03-31 13:18:11 【问题描述】:

我正在尝试格式化字符串以获取数字。但是,我尝试了不同的方法,当我尝试删除 符号时,我得到了一系列数字。我做错了什么?

$sn_get_full_price = "€12.000,0";
$sn_get_full_price_no_comma = preg_replace('/^([^,]*).*$/', '$1',$sn_get_full_price);
$sn_get_n_price = preg_replace('/[^\d,\.]/', '',$sn_get_full_price_no_comma);

我得到的结果是836412.000 而不是12000

还有一种方法可以通过一行代码来实现吗?

【问题讨论】:

不可重现 - 3v4l.org/JZYYQ 我使用这个确切的代码得到12.000 这很奇怪。为什么€符号被替换为8364?我正在使用wordpress 【参考方案1】:

原因是您的真实字符串是"€12.000,0",其中€符号写为html实体(显示您的html页面的源代码以被说服)。

为了解决你可以使用:

echo str_replace(['€', ',0'], '', $yourstring);

您也可以使用您的实际代码,但您必须先转换实体(使用html_entity_decode())并将u 修饰符添加到您的模式(尤其是第二个)。

【讨论】:

【参考方案2】:
$sn_get_full_price = "€12.000,0";
$sn_get_full_price_no_comma = preg_replace('/[^0-9]|[^,]*$/m', '' ,$sn_get_full_price);

这个正则表达式返回 12000。

它会删除所有非数字 ([^0-9]) 以及小数点逗号后的所有符号 ([^,]*$)。

【讨论】:

以上是关于PHP替换字符串中的货币[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

用字符串中的任何字符查找任何数字和空格的匹配模式并替换为 |在 PHP [关闭]

Javascript 正则表达式替换所有非货币字符

替换字符串有问题吗? [关闭]

用一组字符替换字符串中的“#”,给出所有可能的字符串组合[关闭]

替换长json字符串中的新行符号[关闭]

如何用熊猫列中的另一个字符串替换子字符串[关闭]