我需要根据用户的价格订购一些用户注册的产品。
我使用WordPress,当用户宣传产品时,我通过input = text获取字段,然后使用函数进行转换。
不幸的是,收到转换后的号码的字段也是一个文本字段,我无法改变它。
因此,当我循环播放帖子并获取其内容时,我使用相同的函数来转换数字。
就视觉而言,它完美地运作......但是当我尝试按价格订购时...它搞砸了。
以下是我的功能:
//convert the number wich is a string, to float
function tofloat($num) {
$dotPos = strrpos($num, '.');
$commaPos = strrpos($num, ',');
$sep = (($dotPos > $commaPos) && $dotPos) ? $dotPos :
((($commaPos > $dotPos) && $commaPos) ? $commaPos : false);
if (!$sep) {
return floatval(preg_replace("/[^0-9]/", "", $num));
}
return floatval(
preg_replace("/[^0-9]/", "", substr($num, 0, $sep)) . ',' .
preg_replace("/[^0-9]/", "", substr($num, $sep+1, strlen($num)))
);
}
$value = get_field('preco_anuncio');
$precoFinal = tofloat($value);
任何想法如何解决?我需要保留视觉效果。用点和逗号。赞:3.567,00€
答案 0 :(得分:0)
好的,所以我让它上班了。不知道这是正确的方式还是最好的方式......但它解决了我的问题,我没有看到任何问题。
以下是我的所作所为:
我所拥有的userSecret
是一个文字输入。
我使用JavaScript在视觉上使其看起来更像货币字段。
注册数据库时,我将其转换为我发布的函数input
:
toFloat
然后我使用function tofloat($num) {
$dotPos = strrpos($num, '.');
$commaPos = strrpos($num, ',');
$sep = (($dotPos > $commaPos) && $dotPos) ? $dotPos :
((($commaPos > $dotPos) && $commaPos) ? $commaPos : false);
if (!$sep) {
return floatval(preg_replace("/[^0-9]/", "", $num));
}
return floatval(
preg_replace("/[^0-9]/", "", substr($num, 0, $sep)) . ',' .
preg_replace("/[^0-9]/", "", substr($num, $sep+1, strlen($num)))
);
}
删除任何点或空格:
number_format($ precoAd,2,',','');
当我从数据库中获取值时,我再次将其传递给number_format()
,以便它看起来像我需要的那样:
number_format($ value,2,',','。');