删除货币符号PHP

时间:2014-09-02 10:08:33

标签: javascript php jquery

我有一个带有jQuery滑块的表单,允许选择价格范围。

运行滑块的JavaScript还会为每个价格添加£符号的前缀。

我想在提交表单之前删除£符号,因为数据库中的价格值只是数字而没有任何货币符号。

我正在尝试使用str_replace函数,但下面的代码无效?

 <div id="slider">
     <input type="text" id="price-min" name="price-min" <?php 
            $price-min = str_replace('£','',$price-min);
           ?>>
     </input>
     <input type="text" id="price-max" name="price-max" <?php 
            $price-max = str_replace('£','',$price-max);
           ?>>
      </input>
 </div>

3 个答案:

答案 0 :(得分:12)

您只需过滤变量即可。

<?php
$value = "£200";
echo filter_var($value, FILTER_SANITIZE_NUMBER_INT);

Live Preview

修改

  

我需要支付0英镑到1000英镑的所有价值,并从1000英镑的数字中删除逗号 - 这可能吗?

<?php
$value = "£200";
echo filter_var( str_replace(",", "", $value), FILTER_SANITIZE_NUMBER_INT);

Live Preview

甚至可以作为浮动消毒

<?php
$value = "£1,200";
echo filter_var($value, FILTER_SANITIZE_NUMBER_FLOAT);

Live Preview

  

有效的变量名称以字母或下划线开头,后跟任意数量的字母,数字或下划线

您的变量中包含-,使其无效。

编辑2

使用javascript删除£,使用正则表达式。

var s = "£1,300";
s.replace(/\D/g,'');

Live Preview

编辑3

如果您接受负十进制数(即: - £20,000.06 / - £20000.06),则使用FILTER_FLAG_ALLOW_FRACTION标志。 Milan指出了这个问题,因为目前的答案没有处理这个测试用例。

<?php
$value = "-£20,000.06";
echo filter_var($value, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION);

Live Preview

答案 1 :(得分:1)

实际上,您可以在提交表单后删除井号,因为php是服务器端语言。因此,要么将其从javascript滑块中删除,要么不会将其添加到value属性中,要么使用表单指向的php脚本中的hd。&#39; s答案中的函数。

答案 2 :(得分:1)

要删除所有字符,但应使用数字,点和减号:

$number = preg_replace('/[^0-9-.]+/', '', $string);

一旦应用,此函数将返回一个数值,该值可以正确转换为浮点值。它还将保持负数完整,这非常重要。这里介绍的其他解决方案将它们转换为正数,如果处理货币价值,这是不正确和危险的。