Php str_replace()的问题

Php str_replace()的问题,php,symfony1,symfony-1.4,Php,Symfony1,Symfony 1.4,我有以下代码: var_dump(format_currency($product_tax = $prodotto->getFinalPrice() + $product->getTax())); var_dump(str_replace(" ", "", format_currency($product_tax = $prodotto->getFinalPrice() + $product->getTax()))); 它的输出是: string ' 333,88' (

我有以下代码:

var_dump(format_currency($product_tax = $prodotto->getFinalPrice() + $product->getTax()));
var_dump(str_replace(" ", "", format_currency($product_tax = $prodotto->getFinalPrice() + $product->getTax())));
它的输出是:

string ' 333,88' (length=8)
string ' 333,88' (length=8)
为什么str_replace函数不能正常工作

问候


Javi

尝试使用<代码>修饰符< /> >空白空间可能实际上不是空白-它可能是其他一些东西。

var_dump(trim($yourString));

我猜你用的是symfony。与其试图解释看不见的字符(黑名单),这可能会根据默认区域性而改变,为什么不简单地列出白名单呢

echo preg_replace('/[^0-9\.,]/i', '', format_currency(...));

这将删除任何不是数字(0-9)逗号(,)或小数点(.)的内容。

您应该使用数字格式()


Downvote不是我的,但这是一段很难调试的代码。请将计算操作从format\u currency调用中去掉。我认为format\u currency不是一个标准函数。是你写的吗?它是怎么工作的?为什么不使用trim?您的
str_replace
应该可以工作……可能是因为货币字符不是空格字符,而是另一个不可见的字符,例如不间断空格。将格式_currency()的结果分配给变量(例如$tmp)。。。然后是echo ord($tmp{0});为了更好地了解该字符的值,请在问题中提供
format\u currency
的代码。不是说trim()会处理大多数空白字符,而是不会删除nbsp字符true的扩展ASCII chr(160),但在这种情况下,您可以这样做:
trim($yourString,chr(0xA0))@xl3-这就是解决问题的方法,是的!我之所以提到它,是因为我在过去使用trim()并假设空白就是空白时,被它咬了一口
$value = number_format($product_tax = $prodotto->getFinalPrice() + $product->getTax(), 2, ',');
// the ',' will force the decimal charecter to be ','

var_dump($value)  --> string '333,88' (length=7)