Помогите по PHP и регулярным выражениям

D3
На сайте с 12.11.2011
Offline
51
612

Есть строка вида "ТЕКСТ-ЧИСЛО_ТЕКСТ", то есть число отделено от текста сначала знаком "-", затем "_". Нужно выбрать из строки только число. Как это сделать?

Красивое женское нижнее белье. http://designer-lingerie.ru/ (http://designer-lingerie.ru/)
siv1987
На сайте с 02.04.2009
Offline
427
#1

preg_match_all( '/\w+-(\d+)_/', $str, $out );

O
На сайте с 29.05.2008
Offline
195
#2

preg_match('^[a-z]+[-]?([0-9]+)[_]+[a-z]+^iU', $what, $matches)

Так более строго. Число попадет в $matches[1].

[umka]
На сайте с 25.05.2008
Offline
456
#3
ortegas:
preg_match('^[a-z]+[-]?([0-9]+)[_]+[a-z]+^iU', $what, $matches)

Так более строго. Число попадет в $matches[1].

А если ТЕКСТ с русскими буквами? :)

Лог в помощь!
O
На сайте с 29.05.2008
Offline
195
#4

preg_match('^[a-zа-я]+[-]?([0-9]+)[_]+[a-zа-я]+^iUu', $what, $matches)

n0name
На сайте с 22.12.2006
Offline
54
#5
ortegas:
preg_match('^[a-zа-я]+[-]?([0-9]+)[_]+[a-zа-я]+^iUu', $what, $matches)

Не будет работать с подобной строкой: "ТЕКСТЁ-123_ТЕКСТ".

ТС, что вы понимаете под «текстом»? Если любые символы, кроме цифр, то лучше такой шаблон использовать:

preg_match('~\D\-(\d+)_\D~u', $str, $matches);
Сервис сравнения цена на VPS (http://vpska.com/)
O
На сайте с 29.05.2008
Offline
195
#6

n0name, почему не будет? Там же модификатор i в конце.

n0name
На сайте с 22.12.2006
Offline
54
#7
ortegas:
n0name, почему не будет? Там же модификатор i в конце.

Буква ё не входит в набор [a-я]. Её всегда нужно указывать отдельно: [а-яё].

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий