开发者

How to remove all non-numeric characters from a string?

I'm trying to remove all non-numeric charac开发者_运维百科ters from my code, but FILTER_SANITIZE_NUMBER_INT allows plus and minus signs.

How can I remove them using PHP that I can add to my code?

Here is my code.

$a = filter_var($a, FILTER_SANITIZE_NUMBER_INT);


I went with the following solution. Uppercase "D" stands for "non-digit".

public static function sanitize_integer($str)
{
    return (int) preg_replace('/\D/', '', $str);
}

If your input string may have leading zeros that you wish to retain, do not cast the mutated string as an integer.

return preg_replace('/\D/', '', $str);

To make fewer replacements (but the same result), use the + (one or more quantifier) to remove multiple consecutive non-numeric characters during each replacement.

return preg_replace('/\D+/', '', $str);


In this case, you may want to consider simply casting the result to an int to remove the plus (+) sign.

$a = (int) filter_var($a,FILTER_SANITIZE_NUMBER_INT);

If you need to drop the minus (-) sign as well, effectively getting the number's absolute value, use PHP's abs() function:

$a = abs((int) filter_var($a,FILTER_SANITIZE_NUMBER_INT));
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜