Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.

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

Форум для авторов модов для phpBB 2.0.x.
Аватара пользователя
Coagulant
Former team member
Сообщения: 955
Стаж: 19 лет 3 месяца
Откуда: Москва

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

Сообщение Coagulant »

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

Проблема использования regexp обсуждалась здесь, но безрезультатно:
http://phpbbguru.net/community/viewtopic.php?t=1808
Аватара пользователя
[R: R@m$e$ :U]
phpBB Maniac
Сообщения: 1464
Стаж: 19 лет 3 месяца
Откуда: Novosibirsk,RU

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

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
Аватара пользователя
Coagulant
Former team member
Сообщения: 955
Стаж: 19 лет 3 месяца
Откуда: Москва

Сообщение Coagulant »

[R: R@m$e$ :U]
А как вырезать теги без $bbcode_uid? т.е. например получить из

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

[beta][quote][tratata][/quote]
вот такой текст:

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

[beta][tratata]
Xpert
phpBB Guru
phpBB Guru
Сообщения: 5484
Стаж: 20 лет 1 месяц
Поблагодарили: 2 раза

Сообщение Xpert »

Coagulant

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

$match = array(
'[quote]',
'[/quote]'
);

$text = str_replace($match, '', $text);
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Аватара пользователя
Coagulant
Former team member
Сообщения: 955
Стаж: 19 лет 3 месяца
Откуда: Москва

Сообщение Coagulant »

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

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

Можно кончно
[R: R@m$e$ :U] писал(а):доработать стандартную обработку из bbcode.php
но получится громозко, имхо
Xpert
phpBB Guru
phpBB Guru
Сообщения: 5484
Стаж: 20 лет 1 месяц
Поблагодарили: 2 раза

Сообщение Xpert »

Coagulant писал(а):это частный случай
А без bbcode_uid ты [beta] от

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

 не отличишь :( Приходится обходиться такими частностями. Массив естественно расщиряется сколько душе годно.
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Аватара пользователя
[R: R@m$e$ :U]
phpBB Maniac
Сообщения: 1464
Стаж: 19 лет 3 месяца
Откуда: Novosibirsk,RU

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

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

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

ВСЕ ПРАВА НА МОДЫ ОТДАНЫ m157y

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