开发者

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].

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜