Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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!

like image 280
Paul Avatar asked Jan 25 '11 22:01

Paul


2 Answers

if (preg_match("/[0-9]+%/", $string, $matches)) {
    $percentage = $matches[0];
    echo $percentage;
}
like image 149
Mikel Avatar answered Sep 20 '22 08:09

Mikel


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

like image 43
brian_d Avatar answered Sep 23 '22 08:09

brian_d