Answers:
您可以使用preg_replace换出所有非数字字符以及逗号和句号/句号,如下所示:
<?php
$testString = '12.322,11T';
echo preg_replace('/[^0-9,.]/', '', $testString);
?>
我很惊讶这里没有提到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的当前库。
真正删除所有非数字字符的最简单方法:
echo preg_replace('/\D/', '', $string);
\D
表示“不是十进制数字的任何字符”
您可以filter_var
删除所有非法字符,数字,点和逗号除外。
FILTER_SANITIZE_NUMBER_FLOAT
过滤器用于去除从字符串中的所有非数字字符。FILTER_FLAG_ALLOW_FRACTION
允许分数分隔符 " . "
FILTER_FLAG_ALLOW_THOUSAND
从字符串中获取逗号的目的。码
$var1 = '12.322,11T';
echo filter_var($var1, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION | FILTER_FLAG_ALLOW_THOUSAND);
输出量
12.322,11
阅读有关filter_var()和清理过滤器的更多信息
与middaparka的答案相同,但删除,.
$unformatted_phone = "phone 122-3222223.ext 442";
echo preg_replace("/[^0-9]/", "", $unformatted_phone);