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 :: Запрет выполнения bb-кодов внутри другого кода
Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010
Помог: 42 раз(а)
Давненько я не программировал и вот решил опять заняться этим делом. Стоит такая задача - отключить исполнение bb-кодов внутри определённого кода (пусть это будет bb-код [code]).
Подскажите как реализовать это, а то мысли путаются, а рациональное решение так и не приходит в голову.
Okula
Отправлено: 26 Июля, 2013 - 12:56:57
Участник
Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010
Помог: 42 раз(а)
Никто идею не подкинет как сделать?
EuGen
Отправлено: 26 Июля, 2013 - 13:01:34
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
Уверен, в Сети существует множество всевозможных реализаций для замены BB. Ниже приведу результат первой пришедшей в голову идеи:
$sData=preg_replace_callback('/\{\{(.*?)\}\}/smi',function($rgMatches) use (&$rgNoBB)
{
return$rgNoBB[$rgMatches[1]-1];
},$sData);
}
- такое решение хорошо тем, что не зависит от способа замены bb-кодов (обычного, то есть того, которым заменяются bb-коды вне запрещающего тега), и, как следствие, не требуется модификация стороннего кода.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
Okula
Отправлено: 02 Августа, 2013 - 02:02:24
Участник
Покинул форум
Сообщений всего: 1389
Дата рег-ции: Окт. 2010
Помог: 42 раз(а)
EuGen, спасибо за подсказку. Сделал немного по другому, разделив текст регулярным выражением:
(то что нужно обработать)(то что не нужно обработать)(то что нужно обработать)
а потом склеил обработанные данные.
Всё обошлось 1-им preg_replace_callback()
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.