php: как найти числа в строке?
У меня есть несколько строк, таких как:
some words 1-25 to some words 26-50
more words 1-10
words text and words 30-100
Как я могу найти и получить из строки все "1-25" и "26-50" и больше
3 ответа:
Если это целые числа, сопоставьте несколько цифр:
\d+
. Для соответствия всему диапазону выражение:(\d+)-(\d+)
.Возможно, вы также хотите разрешить пробелы между тире и числами:
(\d+)\s*-\s*(\d+)
И, возможно, вы хотите убедиться, что выражение стоит свободно, то есть не является частью слова:
\b(\d+)\s*-\s*(\d+)\b
\b
это совпадение нулевой ширины и тесты для границ слов. Это выражение запрещает вещи вроде "Some1 -2text
", но допускает "Some 1-2 text
".
Это можно сделать с помощью регулярных выражений:
echo preg_match_all('/([0-9]+)-([0-9]+)/', 'some words 1-25 to some words 26-50 more words 1-10 words text and words 30-100', $matches); 4 print_r($matches); Array ( [0] => Array ( [0] => 1-25 [1] => 26-50 [2] => 1-10 [3] => 30-100 ) [1] => Array ( [0] => 1 [1] => 26 [2] => 1 [3] => 30 ) [2] => Array ( [0] => 25 [1] => 50 [2] => 10 [3] => 100 ) )
Для каждого диапазона первое значение находится в массиве [1], а второе-в массиве[2] с тем же индексом.