PHP 替换字符串中的货币
PHP replace currency in a string
我正在尝试格式化一个字符串以获得一个数字。然而,我尝试了不同的方法,当我尝试删除 €
符号时,我得到了一系列数字。我做错了什么?
$sn_get_full_price = "€12.000,0";
$sn_get_full_price_no_comma = preg_replace('/^([^,]*).*$/', '',$sn_get_full_price);
$sn_get_n_price = preg_replace('/[^\d,\.]/', '',$sn_get_full_price_no_comma);
我得到的结果是 836412.000
而不是 12000
。
还有一种方法可以用一行代码来解决这个问题吗?
原因是您的真实字符串是 "€12.000,0"
,欧元符号写成 html 实体(显示您的 html 页面的源代码以供说服)。
要解决这个问题,您可以使用:
echo str_replace(['€', ',0'], '', $yourstring);
您也可以使用您的实际代码,除了您必须先转换实体(使用 html_entity_decode()
)并将 u
修饰符添加到您的模式(特别是第二个) .
$sn_get_full_price = "€12.000,0";
$sn_get_full_price_no_comma = preg_replace('/[^0-9]|[^,]*$/m', '' ,$sn_get_full_price);
这个正则表达式 returns 12000.
它会删除所有非数字 ([^0-9]) 以及小数点逗号后的所有符号 ([^,]*$)。
我正在尝试格式化一个字符串以获得一个数字。然而,我尝试了不同的方法,当我尝试删除 €
符号时,我得到了一系列数字。我做错了什么?
$sn_get_full_price = "€12.000,0";
$sn_get_full_price_no_comma = preg_replace('/^([^,]*).*$/', '',$sn_get_full_price);
$sn_get_n_price = preg_replace('/[^\d,\.]/', '',$sn_get_full_price_no_comma);
我得到的结果是 836412.000
而不是 12000
。
还有一种方法可以用一行代码来解决这个问题吗?
原因是您的真实字符串是 "€12.000,0"
,欧元符号写成 html 实体(显示您的 html 页面的源代码以供说服)。
要解决这个问题,您可以使用:
echo str_replace(['€', ',0'], '', $yourstring);
您也可以使用您的实际代码,除了您必须先转换实体(使用 html_entity_decode()
)并将 u
修饰符添加到您的模式(特别是第二个) .
$sn_get_full_price = "€12.000,0";
$sn_get_full_price_no_comma = preg_replace('/[^0-9]|[^,]*$/m', '' ,$sn_get_full_price);
这个正则表达式 returns 12000.
它会删除所有非数字 ([^0-9]) 以及小数点逗号后的所有符号 ([^,]*$)。