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

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

我需要的:

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

$a = "1,435";

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

之所以失败,是因为$a = "1435"是数字。 但是$a = "1,435"不是数字。 因为我得到的某些字符串将是带逗号的常规句子,所以我无法对每个字符串都执行字符串替换。

user1082428 asked 2020-07-05T11:09:00Z
7个解决方案
90 votes

用另一种方法来做:

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

if( is_numeric( $b ) ) {
    $a = $b;
}
JJJ answered 2020-07-05T11:09:40Z
21 votes

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

Kenaniah answered 2020-07-05T11:09:20Z
18 votes

最简单的是:

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

或者如果您需要浮动:

$var = floatval(preg_replace('/[^\d.]/', '', $var));
Jayela answered 2020-07-05T11:10:05Z
3 votes

试试这个。这对我有用

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”的“,”

kaushi answered 2020-07-05T11:10:43Z
2 votes
 function cleanData($a) {

     if(is_numeric($a)) {

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

     return $a;

}
Ryan answered 2020-07-05T11:10:58Z
1 votes

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

例:

/[0-9,]+/

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英镑的荣誉,”

Flaxious answered 2020-07-05T11:11:45Z
0 votes

听起来像是您所寻找的理想解决方案是filter_var()

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

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

orrd answered 2020-07-05T11:12:10Z
translate from https://stackoverflow.com:/questions/9334879/php-remove-commas-from-numeric-strings