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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Помогите написать регулярку

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
nkl
Отправлено: 22 Мая, 2014 - 15:00:55
Post Id



Посетитель


Покинул форум
Сообщений всего: 305
Дата рег-ции: Янв. 2012  


Помог: 1 раз(а)




Я никак не могу разобраться с этими регулярками, мне нужно отсюда:
Цитата:
фыв фывфы id:13 (Username) проыдвлаыд фывфывфы id:18 фыв фывыв

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

В итоге, хотим получить фичу как в VK, клиентская часть уже готова. В принципе, можно и по своему вставлять id и (Необязательный текст).
 
 Top
esterio
Отправлено: 22 Мая, 2014 - 15:20:33
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




CODE (regex):
скопировать код в буфер обмена
  1. id:(\d+?)\s(?:\((\w+?)\))?

?
 
 Top
nkl
Отправлено: 23 Мая, 2014 - 08:08:24
Post Id



Посетитель


Покинул форум
Сообщений всего: 305
Дата рег-ции: Янв. 2012  


Помог: 1 раз(а)




Ваш вариант не берет значение стоящее в скобках, еслив нем есть пробел, например так id:123 (Animal Horse)
В общем, вот наше решение:
PHP:
скопировать код в буфер обмена
  1. /(?P<str>id:(?P<id>\d+)( ?\((?P<name>[^\)]+)\))?)/Dui
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Регулярные выражения »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB