我有一个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(" ", ""));
有什么想法吗?
答案 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); ?>