无法从数字中删除空白(PHP/JS)


Cant remove whitespace from number (PHP/JS)

我有一个Magento商店,我需要从数字中删除一个空格,这样我以后就可以用它来划分价格和其他东西。

代码就这么简单:

<script>
var newprice = <?php echo $newprice;?>
document.write(newprice);
</script>

如果价格低于1000(三个数字),则输出正确。如果价格是四个数字,它根本不会输出。虽然我可以从源代码中看到变量存储正确,例如:

var newprice = 1 089

我需要的是删除这些空白,但这似乎并没有那么容易。我试过:

var newprice = "<?php echo $newprice;?>" // with quotes
document.write(parseInt(newprice));

这只输出"1"。我也尝试过以下代码,但它输出1089(带空格):

document.write(newprice.replace(" ", ""));

有什么想法吗?

这很奇怪。我闻到老鼠的味道。我认为你看到的"空格"可能不是空格(ASCII字符代码32),而是字符集中可能没有的其他字符。您的站点中的所有内容都设置为UTF-8吗?

通常,我们希望在此处看到逗号或句点:"1,089""1.089"。千位分隔符是在PHP区域设置的。参见localeconv()的输出

我建议您研究一下$newprice在您的Magento代码中的设置位置。我认为这是一根绳子。以对人类有意义的方式显示价格的字符串。

对于需要数字而不是字符串的小型计算机,$_product->getFinalPrice();可能会更好,它会返回一个浮点值,或者一些将价格作为数字而不是人类可读字符串的函数。

如果不能做到这一点,基于我怀疑你的"空格"不是字符(32),强力preg_replace(anything that isn't a digit, period or comma)可能比字符串替换更有效(尽管有多字节字符代码):

var newprice = <?php echo(preg_replace("#[^0-9'.',].#","",(string)$newprice).";"); ?>

试试这个

<script>
var newprice = <?php echo str_replace(' ', '', $newprice);?>
document.write(newprice);
</script>

可能是您从php得到的值,也可能是字符串

var newprice = <?php echo intval($newprice); ?>