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