Нужна помощь в регулярных выражениях PHP - PullRequest
1 голос
/ 10 декабря 2011

У меня есть, например, такая строка - "7-й путь" или "7-й номер, некоторые другие слова" или "Некоторое слово 8-й слово".

Мне нужно получить первое вхождение числа и всех других следующих символов в первое вхождение пробела.

Так что для приведенных выше примеров мне нужны такие значения "7-й", "7-й", "8-й".

А затем из этих совпадений типа "7-й" мне нужно извлечь только цифры в других операциях.

Заранее спасибо!

Ответы [ 3 ]

4 голосов
/ 10 декабря 2011

Регулярное выражение должно быть /(\d+)([^\d]+)\s/, а числа будут преобразовываться в $1, а конечные символы в $2

Пример кода:

$string = '7-th Road';
preg_match_all('/(\d+)([^\d]+)\s/', $string, $result, PREG_PATTERN_ORDER);

var_dump($result[1]);
array(1) {
  [0]=> string(1) "7"
}

var_dump($result[2]);
array(1) {
  [0]=> string(1) "-th"
}
0 голосов
/ 10 декабря 2011

Если вы хотите получить только цифры из текста, используйте его:

preg_match_all('/(\d+)[th|\-th]*?/','7-th", "7th", "8-th', $matches);

Но если вы хотите удалить 'th' или другое, просто сделайте замену:

preg_replace('/(\d+)[th|\-th]*?/','$1', 'some string')

Не уверен насчет последнего ...

0 голосов
/ 10 декабря 2011

Вы просите что-нибудь подобное?

#(\d+)-?(?:st|nd|rd|th)#

Пример

...