I'm trying to remove all non-numeric characters 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));
Assume you are getting your string text from input field on js event then you can do this
const inputTag = document.getElementById('input-id');
//here you may check above variable if not null before calling
// addEventListener on it
inputTag.addEventListener('blur', (e)=>{
var inputText = e.target.value;
inputText = inputText.replace(/\s/g,'');
});
this regex /\s/g will search at global level for spaces in your string guranteed this will do the job