从字符串中删除非数字字符(不包括句点和逗号)(即删除除数字、逗号和句点之外的所有字符)

php
2022-08-30 06:46:28

如果我有以下值:

 $var1 = AR3,373.31

 $var2 = 12.322,11T

如何创建新变量并将其设置为删除了任何非数字字符(逗号和句点除外)的数据副本?上述值将返回以下结果:

 $var1_copy = 3,373.31

 $var2_copy = 12.322,11

答案 1

您可以使用preg_replace来交换所有非数字字符以及逗号和句点/句号,如下所示:

$testString = '12.322,11T';
echo preg_replace('/[^0-9,.]+/', '', $testString);

该模式也可以表示为/[^\d,.]+/


答案 2

我很惊讶这里没有提到filter_var,因为这是一个如此古老的问题......

PHP有一个内置的方法,可以使用清理过滤器来做到这一点。具体来说,在这种情况下要使用的一个是标志。这样:FILTER_SANITIZE_NUMBER_FLOATFILTER_FLAG_ALLOW_FRACTION | FILTER_FLAG_ALLOW_THOUSAND

$numeric_filtered = filter_var("AR3,373.31", FILTER_SANITIZE_NUMBER_FLOAT,
    FILTER_FLAG_ALLOW_FRACTION | FILTER_FLAG_ALLOW_THOUSAND);
echo $numeric_filtered; // Will print "3,373.31"

还值得一提的是,因为它是PHP内置的,所以它比在PHP的当前库中使用正则表达式要快一些(尽管字面上是纳秒)。


推荐