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

时间:2016-04-06 12:27:34

标签: javascript php magento

我有一个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));

仅输出&#34; 1&#34;。我也尝试了以下代码,但它输出1 089(带空格):

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

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

试试这个

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

答案 1 :(得分:1)

这很奇怪。我闻到了一只老鼠。我认为你看到的'空间'可能不是空格(ASCII字符代码32),但可能不在字符集中的其他字符。您网站中的所有内容都设置为UTF-8吗?

通常我们会在此处看到逗号或句点:"1,089""1.089"。千位分隔符在PHP语言环境中设置。请参阅localeconv()

的输出

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

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

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

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

答案 2 :(得分:0)

可能是你的php值可以是一个字符串

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