правильный разбор bb-codes

Идеи для расширения функциональности phpBB 2.0.x
quazi
phpBB 2.0.2
Сообщения: 306
Стаж: 20 лет 1 месяц

правильный разбор bb-codes

Сообщение quazi »

знающим предлагаю обсудить кардинальную модификацию алгоритма обработки bb-codes
прошедшее обновление показало, что эта часть форума (я говорю пока только о ней) имеет серьезные проблемы

цели
1. предотвратить "пустые" сообщения, состоящие из пустых тэгов типа [ b][/b]
2. предотвратить "пустые" сообщения, состоящие из пробельных символов
3. безопасные УРЛы
4. предотвратить некорректную обработку смешанных списков
  • и
    • анализируя коды тэгов я пришел к выводу, что львиная доля всего решается рнр-кодом, причем все это можно было бы решить "парой красивых регэкспов"

      1. решение

      Код: Выделить всё

      /\[([biu])\]((?:(?!\[\/?\\1\]).)+)\[\/\\1\]/
      одновременно решается задача неправильной вложенности тэгов типа [ b][ i] [/b][/i]
      2.
      вырезать все начальные пробельные символы
      trim(...)
      и разумно вырезать внутренние пробельные символы (решения пока нет)

      3. безопасные УРЛы (черновой вариант)

      Код: Выделить всё

      $rexp = '/\[url(?:=(.+?))?\]((?:(?!(?:\[\/url\]|\[url(?:=(.+?))?\])).)+)\[\/url\]/s';
      
      function url_cb($matches)
      {
      	print_r($matches);
      	if ($matches[1]) {
      		$href = $matches[1];
      		$text = $matches[2];
      	} else {
      		$href = $text = $matches[2];
      	}
      	return "<a href=\"$href\">$text</a>";
      }
      
      $x = preg_replace_callback($rexp, 'url_cb', $text);
      
      4. смешанные списки - решения пока нет, но это решаемо

Вернуться в «Запросы модов для phpBB 2.0.x»