Фикс незакрытых BB кодов

dr_vice
На сайте с 22.01.2013
Offline
56
493

Здравствуйте. Вопрос по незакрытым тегам в чате, чат на DLE (http://happy-hack.ru/ в сайдбаре слева). При публикации сообщения в чат с незакрытым тегом, например зачёркнутый текст, всё это дело распространяется на весь контент сайта что ниже. Автор чата выпустил фикс на регулярках:

preg_match_all( '/\[(b|i|u|s|color=([^\]]+))]/is' , $message , $count_start_tag );
preg_match_all( '/\[\/(b|i|u|s|color)]/is' , $message , $count_end_tag );

if( count($count_start_tag[0]) != count($count_end_tag[0]) ) $error = "Сообщение содержит незакрытые теги.";

Он работает, но лишь когда сообщение просто содержит незакрытый тег, например:

текст

или

текст

Но когда какой нибудь юзер решит потролить и намеренно меняет BB коды местами то это не помогает:

(/s)текст //Квадратные скобки заменил на круглые, ибо bb код трётся

Помогите пожалуйста решить данную проблему. :попкорн:

---------- Post added 02-12-2014 at 19:49 ----------

//Разобрался, проблема решена.

siv1987
На сайте с 02.04.2009
Offline
427
#1

Парсинг ббкода должен идти от открывающего тега до закрывающего, тогда код будет заменятся правильно а не закрывающий теги не будут ломать верстку.

LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#2

У меня сделано банально:

$comment_msg = preg_replace("#\[b\](.*?)\[/b\]#si", "<b>\\1</b>", $comment_msg,100);

Ну по сути, тоже самое, что написал siv1987 выше.

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий