Как сделать, чтобы одиночные теги BBCode тоже преобразовались?

Список разделов phpBBex 1.x (поддерживается) Поддержка 1.x

Описание: У вас проблемы с phpBBex 1.x и вам необходима помощь? Спрашивайте здесь!
Правила раздела: Одна тема — один вопрос или группа связанных вопросов. Обязательно формируйте внятный заголовок, максимально отражающий суть вопроса. Подробно описывайте проблему. Не забудьте указать версию phpBBex и какие моды установлены, по возможности добавьте скриншоты проблемы или ссылку на страницу с проблемой.
Модератор: Поддержка

Сообщение #1 Алексей » 06.10.2012, 09:54

Подскажите пожалуйста, как сделать, чтобы одиночные теги тоже преобразовались. Переезжаю с uCoz-форума на phpBBex. В сообщениях есть одиночные теги:
Код: Выделить всё
[*], [hr], (c), (r), (tm)
Как лучше сделать преобразование этих тегов?
Алексей M
Автор темы
Аватара
Репутация: 19
С нами: 11 лет 7 месяцев

Сообщение #2 VEG » 06.10.2012, 10:06

Алексей:[*]
Этот BBCode поддерживается phpBB и phpBBex (маркер в списке).
Алексей:(c), (r), (tm)
Необходимости в подобных комбинациях нет, поскольку это обычные символы. Просто автозаменой по базе замените на: © ® ™. Этим самым вы также избавитесь от проблем, когда, например, в каком-нибудь коде определённая часть воспринимается как заменяемая конструкция, и вместо function a(c) { ... } у вас может получиться function a© { ... }.
Алексей:[hr]
Такой вариант в phpBBex пока что недоступен. Можно сделать только так: [hr][/hr].
VEG M
Администратор
Аватара
Откуда: Finland
Репутация: 1653
С нами: 12 лет

Сообщение #3 Алексей » 06.10.2012, 11:00

Спец. символы я сконвертирую. Остались [*] и [hr]
Маркеры [*] работают только внутри тега list, а надо чтобы отдельно тоже работали.

Прогнал функцию str_replace по 173669 сообщениям:
Код: Выделить всё
$html = str_replace(array('<hr />', '<li>', '&copy;', '&reg;', '&#153;',),
      array('[hr]', '[*]', '(c)', '(r)', '(tm)'), $html, $count);
$count_all += $count;
получил $count_all = 9 (из них кол-во [hr] = 4). Наверное так и сделаю поменяю <hr /> на [hr][/hr].

Вот что делать с отдельными маркерами, <li>текст менять на [*]текст[/*] (выходит ошибка: "BBCode создан в недопустимой форме") или
Код: Выделить всё
[list][*]текст[/list]
, но появляется дополнительный отступ, его не должно быть. Может есть другое решение?
Алексей M
Автор темы
Аватара
Репутация: 19
С нами: 11 лет 7 месяцев

Сообщение #4 VEG » 06.10.2012, 11:40

Алексей, ну можете тоже использовать юникодный символ • :) В phpBB у [*] строго одно предназначение — маркер в списке. Поэтому он и не работает за пределами [list].
VEG M
Администратор
Аватара
Откуда: Finland
Репутация: 1653
С нами: 12 лет

Сообщение #5 Алексей » 06.10.2012, 12:00

Сейчас просмотрел все сообщения маркеры [*] используются только внутри [list], хотя в uCoz могут использоваться отдельно. Всё, проблем больше нет, спасибо.
Алексей M
Автор темы
Аватара
Репутация: 19
С нами: 11 лет 7 месяцев


Вернуться в Поддержка 1.x