Перейти к содержимому

Реферальная программа Мегаплана

Партнерская программа Kredov

Не распознается спецсимвол в регулярке

#1 Kuchuluk

Kuchuluk
  • Пользователь
  • 315 сообщений
  • Репутация: 5
0

Отправлено 06 Март 2013 - 19:39

заношу в переменную строку с датой и нужно выдрать по отдельности число, месяц и год.
$date = "31-01-2013";
$massiv = preg_match("(\d{2}).(\d{2}).(\d)",$date,$karman);
var_dump($karman);
но выдает вот такую ошибку Warning: preg_match() [function.preg-match]: Unknown modifier '.' in Z:\home\localhost\www\test\regularki.php on line 24 , типа неизвестный модификатор. Но как точка может быть неизвестной? это же спецсимвол для регулярных выражений.

 

 

  • 0

#2 IGRIKRUS

IGRIKRUS
  • Пользователь
  • 9 сообщений
  • Репутация: 0

Отправлено 06 Март 2013 - 23:21

нужно выдрать по отдельности число, месяц и год.


а зачем выдирать регуляркой когда можно так
$date = "31-01-2013";
$mass = explode('-',$date);
var_dump($mass);

  • 0

#3 Kuchuluk

Kuchuluk
    Topic Starter
  • Пользователь
  • 315 сообщений
  • Репутация: 5

Отправлено 06 Март 2013 - 23:37

а зачем выдирать регуляркой когда можно так

так в том то и дело, что мне надо именно регуляркой(
  • 0

#4 IGRIKRUS

IGRIKRUS
  • Пользователь
  • 9 сообщений
  • Репутация: 0

Отправлено 06 Март 2013 - 23:55

а что вы пытаетесь проверить регуляркой?

если не проверяете значение даты то смысл делать это через регулярку ?
  • 0

#5 matroskin8

matroskin8
  • Пользователь PRO
  • 767 сообщений
  • Репутация: 143

Отправлено 07 Март 2013 - 00:03

Вообще-то, любой шаблон регулярных выражений должен помещаться в ограничители, каковыми могут являться любые парные символы. У Вас таких ограничителей нет - отсюда и ошибка, поскольку интерпретатор полагает, что ограничителем выступает символ скобки... после закрывающей скобки стоит точка, которая и есть тем самым неизвестным модификатором шаблона.
Чаще всего в качестве ограничителей используются символы слеша или диеза.
Также если предполагается, что разделитем в формате даты будет дефис, то лучше его и указывать вместо точки. Ну и в качестве года Ваш шаблон будет пропускать только одну цифру, а не 4.
Так будет работать:
$date = "31-01-2013";
$massiv = preg_match("#(d{2}).(d{2}).(d{4})#",$date,$karman); // вместо точки лучше указывать дефис, если он используется в качестве разделителя
var_dump($karman);

  • 1


#6 Kuchuluk

Kuchuluk
    Topic Starter
  • Пользователь
  • 315 сообщений
  • Репутация: 5

Отправлено 07 Март 2013 - 16:24

matroskin8, спасибо. я думал нужно обязательно спецсимволами пользоваться.
  • 0

#7 matroskin8

matroskin8
  • Пользователь PRO
  • 767 сообщений
  • Репутация: 143

Отправлено 07 Март 2013 - 16:49

Пожалуйста.

я думал нужно обязательно спецсимволами пользоваться

Если это об ограничителях шаблона, то отнюдь нет :) В качестве ограничителей может выступать любой символ, кроме альфанумериков (латинских литер и цифр) и обратного слеша. Если не ошибаюсь, то ограничителями могут выступать даже кириллические символы, поскольку они не запрещены (не относятся к категории альфанумериков). Ну и само собой, что если ограничитель встречается внутри шаблона, то его следует экранировать, чтобы он не воспринимался окончанием шаблона.
  • 1


#8 Mr.Developer

Mr.Developer
  • Пользователь
  • 73 сообщений
  • Репутация: 12

Отправлено 13 Март 2013 - 12:21

Регулярки просто и легко проверять можно например здесь: http://pyha.ru/fishki/regexp/
  • 0

#9 Kuchuluk

Kuchuluk
    Topic Starter
  • Пользователь
  • 315 сообщений
  • Репутация: 5

Отправлено 17 Март 2013 - 12:04

по этой ссылке перехожу, у меня ошибка 404 вылезает Not found


  • 0

#10 Mr.Developer

Mr.Developer
  • Пользователь
  • 73 сообщений
  • Репутация: 12

Отправлено 18 Март 2013 - 09:23

Видимо приехали они. Какие то проблемы на их сервере.

Вот хорошие альтернативы:
http://gskinner.com/RegExr/
http://regexpr.ru/
http://www.solmetra.com/scripts/regex/


  • 1

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru