【问题标题】:PHP replace currency in a string [closed]PHP替换字符串中的货币[关闭]
【发布时间】: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

标签: php regex number-formatting


【解决方案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]) 以及小数点逗号后的所有符号 ([^,]*$)。

    【讨论】:

      猜你喜欢
      • 2011-03-18
      • 1970-01-01
      • 1970-01-01
      • 2014-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多