删除货币符号PHP


Remove Currency Symbol PHP

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

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

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

我正在尝试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>

您只需过滤变量即可。

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

实时预览

编辑

我需要涵盖从0英镑到1000英镑的所有价值,并从1000英镑的数字中去掉逗号——这可能吗?

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

实时预览

甚至可以作为浮动进行消毒

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

实时预览

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

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

编辑2

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

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

实时预览

编辑3

如果您接受负十进制数字(即:-2000000.06英镑/-20000.06英镑),则使用FILTER_FLAG_ALLOW_FRACTION标志。米兰指出了这个问题,因为目前的答案无法处理这个测试案例。

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

实时预览

实际上,您可以在提交表单后删除磅符号,因为php是一种服务器端语言。因此,要么从javascript滑块中删除它,这样它就不会添加到value属性中,要么使用hd中的函数s在php脚本中的答案,表单指向。

要删除除数字、点和减号之外的所有字符,请使用:

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

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

HTML中的货币符号是HTML实体(我的意思是,前端值),因此直接使用货币符号来查找和替换它们是不可能的,因此在PHP中使用如下只获取数字。

$price = '$109.99';
$digitOnly = preg_replace('/&.*?;/', '', $price);