Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Помогите, пожалуйста
Форумы портала PHP.SU » PHP » Регулярные выражения » Помогите, пожалуйста

Страниц (1): [1]
 

1. LittleMuk - 02 Апреля, 2014 - 14:12:20 - перейти к сообщению
Всем доброго.

Подскажите, пожалуйста, составить рег.выражение. Сам не занимался, а надо как обычно вчера.

Есть запись вида:

ГОСТ Р 1111-2000 (полный вид)

причем ГОСТ Р - может быть, может не быть
1111 - это номер ГОСТА числовой, может быть представлен так или с точками: 1.11.1 Кол-во цифр неизвестно, кол-во точек неизвестно.
2000 - это год, может указываться, может нет (дефиса соотв.нет), может так же писаться сокращенно "00"
Пробелов между словами так же может быть не 1, а по 2 и более

Надо выкряжить номер госта(как написан) и год, если он есть. и вставить к код пхп

Заранее спс!
2. Мелкий - 02 Апреля, 2014 - 14:23:13 - перейти к сообщению
В номере госта ожидаются только цифры и точки или может ещё что-то быть?
После номера сразу дефис и год без пробелов, если есть?

PHP:
скопировать код в буфер обмена
  1. $sInput = "ГОСТ Р 1111-2000";
  2. $sRegexp = "~(?:ГОСТ Р)?\s++([\d\.]++)(?:-(\d++))?~u";
  3. preg_match($sRegexp, $sInput, $rgOut);
  4. var_dump($rgOut);
3. LittleMuk - 02 Апреля, 2014 - 14:48:28 - перейти к сообщению
[quote=Мелкий]В номере госта ожидаются только цифры и точки или может ещё что-то быть?
После номера сразу дефис и год без пробелов, если есть?

номер - только точки и цифры и пробелы(возможно)
после номера пробелы тоже возможны
4. LittleMuk - 03 Апреля, 2014 - 14:23:47 - перейти к сообщению
Спасибо, помогло

 

Powered by ExBB FM 1.0 RC1