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));
精彩评论