I know this might sound as really dummy question, but I'm trying to ensure that the provided string is of a number / decimal format to use it later on with PHP's number_format() function.
How would I do it - say someone is typing 15:00 into the text field - what regular expression and php function should I use to remove the colon from it and make it only return the valid characters.
preg_match() returns array - so I can't pass the result to number_format() unless I implode() it or something like this.
Your help would be very much appreciated.
You could do something like this if you want only whole numbers.
function make_whole($v){
$v = floor($v);
if(is_numeric($v)){
echo (int)$v;
// if you want only positive whole numbers
//echo (int)$v = abs($v);
}
}
Another way to get only the numbers in a regex string is as shown below:
$output = preg_replace("/\D+/", "", $input);
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") )
You can try that one:
$string = preg_replace('/[^0-9]/', '', $string);
Cheers.
use built in php function is_numeric
to check if the value is numeric.
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.[^0-9]
matches anything that is not a number, and since we're using preg_replace
, they will be replaced by nothing ''
(second argument of preg_replace
).Source: Stackoverflow.com