I'm trying to isolate the percentage value in a string of text. This should be pretty easy using preg_match, but because the percentage sign is used as an operator in preg_match I can't find any sample code by searching.
$string = 'I want to get the 10% out of this string';
What I want to end up with is:
$percentage = '10%';
My guess is that I'll need something like:
$percentage_match = preg_match("/[0-99]%/", $string);
I'm sure there is a very quick answer to this, but the solution is evading me!
if (preg_match("/[0-9]+%/", $string, $matches)) {
$percentage = $matches[0];
echo $percentage;
}
use the regex /([0-9]{1,2}|100)%/
. The {1,2}
specifies to match one or two digits. The |
says to match the pattern or the number 100.
[0-99]
which you had matches one character in the range 0-9
or the single digit 9
which is already in your range.
Note: This allows 00, 01, 02, 03...09 to be valid. If you do not want this, use /([1-9]?[0-9]|100)%/
which forces one digit and an optional second in the range 1-9
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With