Найти процентное значение в строке, используя preg_match - PullRequest
4 голосов
/ 26 января 2011

Я пытаюсь выделить процентное значение в строке текста.Это должно быть довольно легко с использованием preg_match, но поскольку знак процента используется в качестве оператора в preg_match, я не могу найти пример кода путем поиска.

$string = 'I want to get the 10%  out of this string';

То, что я хочу закончить, это:

$percentage = '10%';

Я предполагаю, что мне понадобится что-то вроде:

$percentage_match = preg_match("/[0-99]%/", $string);

Я уверен, что на этот вопрос очень быстрый ответ, но решение уклоняется от меня!

Ответы [ 5 ]

5 голосов
/ 26 января 2011
if (preg_match("/[0-9]+%/", $string, $matches)) {
    $percentage = $matches[0];
    echo $percentage;
}
3 голосов
/ 26 января 2011

используйте регулярное выражение /([0-9]{1,2}|100)%/. {1,2} указывает на совпадение с одной или двумя цифрами. | говорит, что соответствует шаблону или число 100.

[0-99] которые у вас совпадают один символ в диапазоне 0-9 или одна цифра 9, которая уже находится в вашем диапазоне.

Примечание. Это позволяет использовать значения 00, 01, 02, 03 ... 09. Если вы не хотите этого, используйте /([1-9]?[0-9]|100)%/, что заставляет одну цифру и дополнительную секунду в диапазоне 1-9

2 голосов
/ 26 января 2011

Почему бы не /\d+%/? Коротко и сладко.

1 голос
/ 26 января 2011

Регулярное выражение должно быть /[0-9]?[0-9]%/.

Диапазоны внутри классов символов приведены только для 1 символа.

0 голосов
/ 26 января 2011
$number_of_matches = preg_match("/([0-9]{1,2}|100)%/", $string, $matches);

Совпадение будет в массиве $matches, в частности $matches[1].

...