Вырезание тегов phpbb

Форум для авторов модов для phpBB 2.0.x. Здесь можно попросить помощи в разработке у коллег.

Вырезание тегов phpbb

Сообщение Coagulant 29.08.2005 0:39

Нужен 100% рабочий код для вырезки тегов phpbb (всех или хотя бы одного) из сообщения.

Проблема использования regexp обсуждалась здесь, но безрезультатно:
http://phpbbguru.net/community/viewtopic.php?t=1808
Аватара пользователя
Coagulant
phpBB 2.0.17
 
Сообщения: 1011
Зарегистрирован: 10.01.2005 19:43
Откуда: Москва


Сообщение [R: R@m$e$ :U] 29.08.2005 20:22

Coagulant
вопрос... надо как в теме вложенные цитаты резать или просто теги? если просто теги... то почему не резать так...
из search.php
Код: Выделить всё
$message = preg_replace("/\[.*?:$bbcode_uid:?.*?\]/si", '', $message);
$message = preg_replace('/\[url\]|\[\/url\]/si', '', $message);

или так...
Код: Выделить всё
preg_replace('/\:[0-9a-z\:]+\]/si', ']', $message)

так режется ббкод, если он отключен... хотя это лишь показывает его как есть.. но легко доработать до полного удаления тегов...
или чуть-чуть недоработать стандартную обработку из bbcode.php
Код: Выделить всё
$text = preg_replace("/\[color=(\#[0-9A-F]{6}|[a-z]+):$uid\]/si", $bbcode_tpl['color_open'], $text);
$text = str_replace("[/color:$uid]", $bbcode_tpl['color_close'], $text);


например вот так...
Код: Выделить всё
$message = preg_replace("/\[color=(\#[0-9A-F]{6}|[a-z]+)\:[0-9a-z\:]+\]/si", '', $message);
$message = preg_replace("/\[\/color\:[0-9a-z\:]+\]/si", '', $message);

у меня стабильно убил тег
Код: Выделить всё
[color=blue][/color]
Руководство пользователя | FAQ | Правила | Как устанавливать MOD'ы
ВОСПОЛЬЗУЙСЯ ПОИСКОМ, ТАМ ЕСТЬ БОЛЬШИНСТВО ОТВЕТОВ
ЕСЛИ НЕ ПОМОГЛО, ИСПОЛЬЗУЙ ШАБЛОН ЗАПРОСА, ПОМОГИ В РЕШЕНИИ ЗАДАЧИ
БЕСПЛАТНО ПОМОГУ ТОЛЬКО НА ФОРУМЕ!!! (ЛС НЕ В СЧЕТ)

Оставь благодарность, подтверди работоспособность совета.

ВСЕ ПРАВА НА МОДЫ ОТДАНЫ m157y
Аватара пользователя
[R: R@m$e$ :U]
phpBB Maniac
 
Сообщения: 1503
Зарегистрирован: 16.01.2005 13:04
Откуда: Novosibirsk,RU

Сообщение Coagulant 29.08.2005 22:19

[R: R@m$e$ :U]
А как вырезать теги без $bbcode_uid? т.е. например получить из
Код: Выделить всё
[beta][quote][tratata][/quote]
вот такой текст:
Код: Выделить всё
[beta][tratata]
Аватара пользователя
Coagulant
phpBB 2.0.17
 
Сообщения: 1011
Зарегистрирован: 10.01.2005 19:43
Откуда: Москва

Сообщение Xpert 29.08.2005 22:32

Coagulant
Код: Выделить всё
$match = array(
'[quote]',
'[/quote]'
);

$text = str_replace($match, '', $text);
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Аватара пользователя
Xpert
phpBB Guru
 
Сообщения: 5636
Зарегистрирован: 13.03.2004 21:27
Откуда: msk.ru

Сообщение Coagulant 29.08.2005 22:35

Ну это частный случай =) Я имел в виду вобщем, конечно. Чтобы вырезались все теги (у них нет uid), но оставались нетронутыми скобочные структуры, не являюющиеся тегами.

Добавлено спустя 1 минуту 17 секунд:

Можно кончно
[R: R@m$e$ :U] писал(а):доработать стандартную обработку из bbcode.php
но получится громозко, имхо
Аватара пользователя
Coagulant
phpBB 2.0.17
 
Сообщения: 1011
Зарегистрирован: 10.01.2005 19:43
Откуда: Москва

Сообщение Xpert 29.08.2005 22:42

Coagulant писал(а):это частный случай

А без bbcode_uid ты [beta] от [code] не отличишь :( Приходится обходиться такими частностями. Массив естественно расщиряется сколько душе годно.
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Аватара пользователя
Xpert
phpBB Guru
 
Сообщения: 5636
Зарегистрирован: 13.03.2004 21:27
Откуда: msk.ru

Сообщение [R: R@m$e$ :U] 30.08.2005 8:30

Coagulant
хм... можно сообразить на удаление [something].....[/something] но вот это тоже не спасет от удаления лишнего... это будет воспринимать любую такую связку за теги... и удалять... минусы... не поддерживает одинарные теги... их надо в ручную массивом... вариантом от Ксперта =) и вероятность удаления лишнего... хотя.... я не уверен, что кто-то просто так будет использовать связки [something][/something] =) легко осуществимо с помощью preg_replace =)
Руководство пользователя | FAQ | Правила | Как устанавливать MOD'ы
ВОСПОЛЬЗУЙСЯ ПОИСКОМ, ТАМ ЕСТЬ БОЛЬШИНСТВО ОТВЕТОВ
ЕСЛИ НЕ ПОМОГЛО, ИСПОЛЬЗУЙ ШАБЛОН ЗАПРОСА, ПОМОГИ В РЕШЕНИИ ЗАДАЧИ
БЕСПЛАТНО ПОМОГУ ТОЛЬКО НА ФОРУМЕ!!! (ЛС НЕ В СЧЕТ)

Оставь благодарность, подтверди работоспособность совета.

ВСЕ ПРАВА НА МОДЫ ОТДАНЫ m157y
Аватара пользователя
[R: R@m$e$ :U]
phpBB Maniac
 
Сообщения: 1503
Зарегистрирован: 16.01.2005 13:04
Откуда: Novosibirsk,RU


Вернуться в Для авторов (phpBB 2.0.x)

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0