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. nkl - 22 Мая, 2014 - 15:00:55 - перейти к сообщению
Я никак не могу разобраться с этими регулярками, мне нужно отсюда:
Цитата:
фыв фывфы id:13 (Username) проыдвлаыд фывфывфы id:18 фыв фывыв

вытащить 13 и 18, а к 13 еще и Username, потому что он есть.
Пока что вот что у меня получается:
preg_match_all("/(id:[0-9]+\s)([(])()/", $input_lines, $output_array);
Скобки эти могут быть, а могут и не быть. Содержимое в них может быть, а может и не быть. НО, пробел между "id:13" и "(", будет всегда и если есть этот пробел, между скобками есть какое-то значение и имеется закрывающаяся скобка, то значение в скобках нужно брать.

В итоге, хотим получить фичу как в VK, клиентская часть уже готова. В принципе, можно и по своему вставлять id и (Необязательный текст).
2. esterio - 22 Мая, 2014 - 15:20:33 - перейти к сообщению
CODE (regex):
скопировать код в буфер обмена
  1. id:(\d+?)\s(?:\((\w+?)\))?

?
3. nkl - 23 Мая, 2014 - 08:08:24 - перейти к сообщению
Ваш вариант не берет значение стоящее в скобках, еслив нем есть пробел, например так id:123 (Animal Horse)
В общем, вот наше решение:
PHP:
скопировать код в буфер обмена
  1. /(?P<str>id:(?P<id>\d+)( ?\((?P<name>[^\)]+)\))?)/Dui

 

Powered by ExBB FM 1.0 RC1