关于php:我想将此格式“$ 1,000,000”更改为“1000000”

I want to change this format, '$1,000,000', to '1000000'

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
How to print a number with commas as thousands separators in JavaScript

我试图以这种格式获取值,$1,000,000。 现在我得到这种格式的值,1000000,它工作正常,但我不想要这个。 我希望它获得$ 1,000,000的价值,并在我的PHP代码中更改它并接受它。

我的HTML:

1
2
3
4
5
6
<form action="index.php" method="Get">
    Enter the present value of pet: <input type="text" name="v" value="1000000"/>
    Enter the value of the pet you want: <input type="text" name="sv" value="1951153458"/>

    <input type="submit" />
</form>

这是我的PHP:

1
2
3
4
5
6
7
8
9
<?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..............

我的计算器以这种方式工作正常:

1
http://ffsng.deewayz.in/index.php?v=1000000&sv=1951153458

但我希望它是:

1
http://ffsng.deewayz.in/index.php?v=$1,000,000&sv=$1,951,153,458

我很困惑如何将此格式$1,000,000更改为1000000
或者如果有其他方式。 我需要使用任何JavaScript代码吗? 在提交表单之前?

有人试图通过以下方式帮助我,但我不知道如何使用它。

1
2
3
4
function reverse_number_format($num)
{
    $num = (float)str_replace(array(',', '$'), '', $num);
}


只需替换字符串中的任何非数字字符:

1
$filteredValue = preg_replace('/[^0-9]/', '', $value);

UPD:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$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
$num = preg_replace('/[\$,]/', '', $num);


要使用您提供的功能来执行此操作:

1
2
3
4
    $v = 1000000;
if(isset($_GET['v'])){
  $v = reverse_number_format($_GET['v']);
}

在reverse_number_format函数中添加行return $num;


在服务器上进行计算,就像你已经在做的那样。 然后只需使用遮罩将其显示给用户。

喜欢:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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/上的工作示例。


你应该使用PHPs floatval函数。