从字符串中删除非数字字符(不包括句点和逗号)(即删除除数字、逗号和句点之外的所有字符)
2022-08-30 06:46:28
如果我有以下值:
$var1 = AR3,373.31
$var2 = 12.322,11T
如何创建新变量并将其设置为删除了任何非数字字符(逗号和句点除外)的数据副本?上述值将返回以下结果:
$var1_copy = 3,373.31
$var2_copy = 12.322,11
如果我有以下值:
$var1 = AR3,373.31
$var2 = 12.322,11T
如何创建新变量并将其设置为删除了任何非数字字符(逗号和句点除外)的数据副本?上述值将返回以下结果:
$var1_copy = 3,373.31
$var2_copy = 12.322,11
您可以使用preg_replace来交换所有非数字字符以及逗号和句点/句号,如下所示:
$testString = '12.322,11T';
echo preg_replace('/[^0-9,.]+/', '', $testString);
该模式也可以表示为/[^\d,.]+/
我很惊讶这里没有提到filter_var,因为这是一个如此古老的问题......
PHP有一个内置的方法,可以使用清理过滤器来做到这一点。具体来说,在这种情况下要使用的一个是标志。这样:FILTER_SANITIZE_NUMBER_FLOAT
FILTER_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的当前库中使用正则表达式要快一些(尽管字面上是纳秒)。