Find a percentage value in a string using preg_match
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
Why not /\d+%/
? Short and sweet.
The regex should be /[0-9]?[0-9]%/
.
The ranges inside character classes are for 1 character only.
$number_of_matches = preg_match("/([0-9]{1,2}|100)%/", $string, $matches);
The match will be in the $matches
array, specifically $matches[1]
.
精彩评论