PHP regular expression - filter number only
Solution 1:
Using is_numeric or intval is likely the best way to validate a number here, but to answer your question you could try using preg_replace instead. This example removes all non-numeric characters:
$output = preg_replace( '/[^0-9]/', '', $string );
Solution 2:
To remove anything that is not a number:
$output = preg_replace('/[^0-9]/', '', $input);
Explanation:
-
[0-9]
matches any number between 0 and 9 inclusively. -
^
negates a[]
pattern. - So,
[^0-9]
matches anything that is not a number, and since we're usingpreg_replace
, they will be replaced by nothing''
(second argument ofpreg_replace
).
Solution 3:
You can try that one:
$string = preg_replace('/[^0-9]/', '', $string);
Cheers.
Solution 4:
This is the right answer
preg_match("/^[0-9]+$/", $yourstr);
This function return TRUE(1) if it matches or FALSE(0) if it doesn't
Quick Explanation :
'^' : means that it should begin with the following ( in our case is a range of digital numbers [0-9] ) ( to avoid cases like ("abdjdf125") )
'+' : means there should be at least one digit
'$' : means after our pattern the string should end ( to avoid cases like ("125abdjdf") )