php: как найти числа в строке?

У меня есть несколько строк:

some words 1-25 to some words 26-50 more words 1-10 words text and words 30-100 

как я могу найти и получить из строки все «1-25» и «26-50» и более

Solutions Collecting From Web of "php: как найти числа в строке?"

Если это целые числа, сопоставьте несколько цифр: \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] в том же индексе.

Я думаю, что этой линии достаточно

 preg_replace("/[^0-9]/","",$string);