[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вложеные теги BBcode
web-monster
Помогите с ббкодом) Вообщем сейчас работает, но проблема в том что вложенные теги не обрабатывает..
[cоlor=#123456]tex[cоlor=#123456]te[/cоlor]ererer[/cоlor]

Крайний колор обработает а средний так и останется в скобках

Сейчас обрабатывается вот этой функцией:
function bbcode($variables){
$modified = preg_replace(array(

"/\[text-align=(.*?)\]/si",
"/\[img\](.*?)\[\/img\]/si",
"/\[color=(.*?)\](.*?)\[\/color\]/si",
"/\[size=(.*?)\](.*?)\[\/size\]/si",
"/\[bgcolor=(.*?)\](.*?)\[\/bgcolor\]/si",
"/\[font=(.*?)\](.*?)\[\/font\]/si",
"/\[line=through\](.*?)\[\/line\]/si",
"/\[sup\]/si",
"/\[\/sup\]/si",
"/\[sub\]/si",
"/\[\/sub\]/si",
"/\[b\]/si",
"/\[\/b\]/si",
"/\[i\]/si",
"/\[\/i\]/si",
"/\[u\]/si",
"/\[\/u\]/si",
"/\[i\]/si",
"/\[\/i\]/si",
"/\[u\]/si",
"/\[\/u\]/si",
"/(<br[^>]*>\s*)+/si"

),
array(

"<p style=\"text-align:$1\">",
"<img src=\"$1\">",
"<span style=\"color:$1\">$2</span>",
"<span style=\"font-size:$1\">$2</span>",
"<span style=\"background-color:$1\">$2</span>",
"<span style=\"font-family:$1;\">$2</span>",
"<span style=\"text-decoration:line-through;\">$1</span>",
"<sup>",
"</sup>",
"<sub>",
"</sub>",
"<b>",
"</b>",
"<em>",
"</em>",
"<u>",
"</u>",
"<em>",
"</em>",
"<u>",
"</u>",
"$1"

),$variables);
return $modified;
}




Спустя 30 минут, 51 секунда (24.03.2010 - 19:13) twin написал(а):
А на кой все регулярками? От того и беда. Нужно открывающий и закрывающий теги отдельно менять, тогда будет гут. А так только один раз меняется. До первого закрывающего.

Спустя 21 минута, 39 секунд (24.03.2010 - 19:34) web-monster написал(а):
А как это будет выглядеть не подскажите? А то я чёт не допёр как это сделать))

Спустя 51 минута, 18 секунд (24.03.2010 - 20:26) twin написал(а):
Ну вот это
"/\[color=(.*?)\](.*?)\[\/color\]/si",

надо разбить на две части.
"/\[color=(.*?)\]/si",

"/\[\/color\]/si",

вторую можно и не регуляркой, простой заменой. Но вообще это дырка для XSS. Лучше все цвета в массив прописать и str_replace()

Спустя 2 часа, 24 минуты, 49 секунд (24.03.2010 - 22:50) web-monster написал(а):
Ок) Всё рабоатет

Спустя 11 часов, 10 минут, 10 секунд (25.03.2010 - 10:01) web-monster написал(а):
Кстати у меня сейчас идёт так:

$text= "текст с ббкодами и всякой фигнёй";
$text=htmlspecialchars($text); //всё рубим
$text=nl2br(stripslashes($text));
$text = bbcode($text); //и преобразовываем из бб в теги

С таким подходом и вариантом с разбиением на части получится сделать xss или нормалёк?

Спустя 1 час, 4 минуты, 53 секунды (25.03.2010 - 11:05) twin написал(а):
Нормалек. Зачем там stripslashes() не уловил только.
Быстрый ответ:

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