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 [关闭]