[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите с регулярным выражением
Diakon
Добрый день!
Мне нужно вернуть массив содержащий разобранную строку BB кода.
Вот, например, есть BB код вида:
$text = '[BCODE:solution]text text text[/BCODE]';
Я написал такую регулярку:
preg_match_all('/\[BCODE\s*:\s*([\'"]?)([^\'"\]]+)\1\]/', $text, $out, PREG_PATTERN_ORDER);
Возвращается массив вида:
[0] => Array
(
[0] => [BCODE:solution]
)

[1] => Array
(
[0] =>
)

[2] => Array
(
[0] => solution
)
Но нет закрывающего BB кода (BCODE) и если не указывать BCODE (т.е. не будет BCODE:solution ) текст - вернется пустой массив. Я понимаю, что написал неверное регулярное выражение. Может кто из здешних мастеров подсказать регулярку, что бы возвращался массив содержащий название BB кода (BCODE), описание, если есть (solution) текст BB кода (text text text) и завершающий тег (/BCODE)?
Заранее огромное спасибо и поклон, кто подскажет!
Guest
Регулярочки сейчас по 15 идут https://getregex.com/
Diakon
Цитата (Guest @ 2.02.2016 - 10:02)
Регулярочки сейчас по 15 идут https://getregex.com/

тогда давай вообще форум закроем - чисто банеры и ссылки на рекламу оставим.
preg_match_all("#\[(.+?)sad.gif.+?)](.+?)\[(.+?)]#is",$text, $out);
Вот такую написал регулярку. Разбирает все как надо
Но вот проблемма в том, что если строка будет не, например, $text = '[DD:sol]data[/DD]'; а $text = '[DD]data[/DD]'; - вернет пустой массив.
Есть у кого какие мысли?
Guest
Ну после двоеточия тоже знак вопроса поставь:
#\[(.+?):?(.+?)](.+?)\[(.+?)]#is
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.