Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Помогите с регулярным выражением
Diakon  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Старик
***

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 125
Пользователь №: 17281
На форуме: 7 лет, 8 месяцев, 8 дней
Карма:




Добрый день!
Мне нужно вернуть массив содержащий разобранную строку 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)?
Заранее огромное спасибо и поклон, кто подскажет!
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Guest  
Дата
Цитировать сообщение


Гость пожелал остаться неизвестным

Unregistered









Регулярочки сейчас по 15 идут https://getregex.com/
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Diakon  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Старик
***

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 125
Пользователь №: 17281
На форуме: 7 лет, 8 месяцев, 8 дней
Карма:




Цитата (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]'; - вернет пустой массив.
Есть у кого какие мысли?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Guest  
Дата
Цитировать сообщение


Гость пожелал остаться неизвестным

Unregistered









Ну после двоеточия тоже знак вопроса поставь:
#\[(.+?):?(.+?)](.+?)\[(.+?)]#is
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса