可能重复: How to print a number with commas as thousands separators in JavaScript
我正在尝试以此格式获取值$1,000,000
。现在我得到这种格式的值1000000
,它工作正常,但我不想要这个。我希望它的价值为$ 1,000,000并在我的PHP代码中进行更改并接受它。
我的HTML:
<form action="index.php" method="Get">
Enter the present value of pet: <input type="text" name="v" value="1000000"/><br>
Enter the value of the pet you want: <input type="text" name="sv" value="1951153458"/><br>
<input type="submit" />
</form>
这是我的PHP:
<?php
$i = 0;
$v = isset($_GET['v']) ? (float) $_GET['v'] : 1000000;
$sv = isset($_GET['sv']) ? (float) $_GET['sv'] : 1951153458;
$petearn = 0;
$firstowner = 0;
$secondowner = 0;
And so on..............
我的计算器正常运行:
http://ffsng.deewayz.in/index.php?v=1000000&sv=1951153458
但我希望它是:
http://ffsng.deewayz.in/index.php?v=$1,000,000&sv=$1,951,153,458
我对如何将此格式$1,000,000
更改为1000000
感到困惑
或者如果有其他方式。我需要使用任何JavaScript代码吗?在提交表单之前?
有人试图通过以下方式帮助我,但我不知道如何使用它。
function reverse_number_format($num)
{
$num = (float)str_replace(array(',', '$'), '', $num);
}
答案 0 :(得分:4)
只需替换字符串中的任何非数字字符:
$filteredValue = preg_replace('/[^0-9]/', '', $value);
<强> UPD 强>:
$value = '$1,951,1fd53,4.43.34'; // User submitted value
// Replace any non-numerical characters but leave dots
$filteredValue = preg_replace('/[^0-9.]+/', '', $value);
// Retrieve "dollars" and "cents" (if exists) parts
preg_match('/^(?<dollars>.*?)(\.(?<cents>[0-9]+))?$/', $filteredValue, $matches);
// Combine dollars and cents
$resultValue = 0;
if (isset($matches['dollars'])) {
$resultValue = str_replace('.', '', $matches['dollars']);
if (isset($matches['cents'])) {
$resultValue .= '.' . $matches['cents'];
}
}
echo $resultValue; // Result: 1951153443.34
答案 1 :(得分:3)
$num = preg_replace('/[\$,]/', '', $num);
答案 2 :(得分:1)
使用您提供的功能执行此操作:
$v = 1000000;
if(isset($_GET['v'])){
$v = reverse_number_format($_GET['v']);
}
在return $num;
答案 3 :(得分:0)
您应该使用PHP floatval函数。
答案 4 :(得分:0)
在服务器上进行计算,就像您已经在做的那样。然后只需使用遮罩将其显示给用户。
像:
function formated(nStr) {
curr = '$ ';
nStr += '';
x = nStr.split('.');
x1 = x[0];
x2 = x.length > 1 ? '.' + x[1] : '';
var rgx = /(\d+)(\d{3})/;
while (rgx.test(x1)) {
x1 = x1.replace(rgx, '$1' + ',' + '$2');
}
if (x1 + x2) {
return curr + x1 + x2
}
else {
return ''
}
}
查看http://jsfiddle.net/RASG/RXWTM/处的工作样本。