PHP从数字字符串中删除逗号

时间:2012-02-17 20:24:11

标签: php string replace numbers comma

在PHP中,我有一个包含所有字符串的变量数组。存储的某些值是带逗号的数字字符串。

我需要什么:

从字符串中修剪逗号的方法,并且只对数字字符串执行此操作。这并不像看起来那么简单。主要原因是以下失败:

$a = "1,435";

if(is_numeric($a))
    $a = str_replace(',', '', $a);

此操作失败,因为$a = "1435"是数字。但$a = "1,435"不是数字。因为我得到的一些字符串将是带逗号的常规句子,所以我不能在每个字符串上运行字符串替换。

7 个答案:

答案 0 :(得分:86)

反过来说:

$a = "1,435";
$b = str_replace( ',', '', $a );

if( is_numeric( $b ) ) {
    $a = $b;
}

答案 1 :(得分:21)

未经过测试,但可能类似于if(preg_match("/^[0-9,]+$/", $a)) $a = str_replace(...)

答案 2 :(得分:15)

最简单的是:

$var = intval(preg_replace('/[^\d.]/', '', $var));

或者如果你需要浮动:

$var = floatval(preg_replace('/[^\d.]/', '', $var));

答案 3 :(得分:2)

 function cleanData($a) {

     if(is_numeric($a)) {

     $a = preg_replace('/[^0-9,]/s', '', $a);
     }

     return $a;

}

答案 4 :(得分:2)

试试这个。这对我有用

number_format(1235.369,2,'.','')

如果你像这样使用number_format number_format(1235.369,2)回答为 1,235.37

但如果您使用如下

number_format(1235.369,2,'.','')回答将是 1235.37

它删除了“1,235.37”的“,”

答案 5 :(得分:1)

如果你想从 包含单词的字符串中的数字中删除逗号,我认为最简单的方法是使用 preg_replace_callback

示例:

  

$str = "Hey hello, I've got 12,500 kudos for you, spend it well"

function cleannr($matches)
{
    return str_replace("," , "" , $matches["nrs"]);
}

$str = preg_replace_callback ("/(?P<nrs>[0-9]+,[0-9]+)/" , "cleannr" , $str);


输出:

  

“嘿,你好,我已经为你赢得了12500个赞誉,花了很多钱”


在这种情况下,模式(正则表达式)与接受的答案中给出的模式不同,因为我们不想删除其他逗号(标点符号)。

如果我们在这里使用/[0-9,]+/而不是/[0-9]+,[0-9]+/,则输出将为:

  

“嘿,你好我得到了12500的荣誉,你花得很好”

答案 6 :(得分:0)

听起来filter_var()似乎是您想要的理想解决方案:

$a = filter_var($a, FILTER_VALIDATE_FLOAT, FILTER_FLAG_ALLOW_THOUSAND);

(请注意,它使用的是FILTER_VALIDATE_FLOAT而不是FILTER_VALIDATE_INT,因为该当前没有FILTER_FLAG_ALLOW_THOUSAND选项)。