Как очистить текст от bb кода?

Проблемы с установкой или работой phpBB 3.0.x? Получите помощь здесь!
С 1 января 2017 года phpBB Group прекращает поддержку phpBB версии 3.0.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.0 до 1 июля 2017 года.
Подробнее: Окончание поддержки phpBB 3.0.
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Petja
phpBB 1.2.0
Сообщения: 10
Стаж: 13 лет 11 месяцев
Благодарил (а): 3 раза

Как очистить текст от bb кода?

Сообщение Petja »

Здравствуйте!
Подскажите, пожалуйста, как очистить программно, желательно при помощи API форума, текст от bb кодов [...]?
Зачем мне это - я вывожу на главной сайта последние сообщения на форуме, и в выводе выводятся квадратные скобки от тегов bb
Пока есть такая очистка:

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

    $post['post_text'] = mb_substr($post['post_text'], 0, 33);
    $post['post_text'] = strip_tags($post['post_text']);
Надо добавить еще от bb тегов.
Заранее спасибо!
Аватара пользователя
Pazh
Former team member
Сообщения: 2317
Стаж: 16 лет 10 месяцев
Благодарил (а): 42 раза
Поблагодарили: 506 раз

Re: Как очистить тест от bb кода?

Сообщение Pazh »

Посмотрите в сторону функций из файла functions_content.php (особенно на первую)

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

* generate_text_for_display()
* generate_text_for_storage()
* generate_text_for_edit()
Помощь в ЛС/email только за WM или ЮMoney
Petja
phpBB 1.2.0
Сообщения: 10
Стаж: 13 лет 11 месяцев
Благодарил (а): 3 раза

Re: Как очистить тест от bb кода?

Сообщение Petja »

Pazh писал(а):generate_text_for_display()
Спасибо! Посмотрел, подключил, но кроме текста этой функции нужны какие-то еще параметры...
Это странно, т.к. мне нужно лишь текст очистить...

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

function generate_text_for_display($text, $uid, $bitfield, $flags)
Откуда мне взять эти доп. параметры...
Аватара пользователя
Pazh
Former team member
Сообщения: 2317
Стаж: 16 лет 10 месяцев
Благодарил (а): 42 раза
Поблагодарили: 506 раз

Re: Как очистить тест от bb кода?

Сообщение Pazh »

Эти поля есть в таблице постов у каждого сообщения (bbcode_uid, bbcode_bitfield), с flag чуть сложнее - его придется делать самостоятельно - посмотрите где вызывается эта функция и как там формируется flag
Помощь в ЛС/email только за WM или ЮMoney
Petja
phpBB 1.2.0
Сообщения: 10
Стаж: 13 лет 11 месяцев
Благодарил (а): 3 раза

Re: Как очистить тест от bb кода?

Сообщение Petja »

Pazh писал(а):Эти поля есть в таблице постов у каждого сообщения
Да, все поля нашел в базе и взял, кроме последнего: $flags

Из мануала (Function.generate text for display):
generate_text_for_display($row['text'], $row['bbcode_uid'], $row['bbcode_bitfield'], $bbcode_options),

последнего нет в базе - $bbcode_options...

Добавлено спустя 21 минуту 57 секунд:
Спасибо.

Вроде все сделал, последнее поле ($flags) - по умолчанию на форуме = 7
Но выбрасывает в ошибку:

Fatal error: Call to a member function optionget() on a non-object in /home/pathtosite/public_html/forum/includes/functions_content.php on line 700

Добавлено спустя 18 минут 47 секунд:
В общем замучался с API и сделал так:

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

$post['post_text'] = str_replace(array('[',']'), array('<','>'), $post['post_text']);
$post['post_text'] = strip_tags($post['post_text']);
bear9
phpBB 1.4.0
Сообщения: 39
Стаж: 15 лет 6 месяцев
Благодарил (а): 1 раз

Re: Как очистить тест от bb кода?

Сообщение bear9 »

А если так:

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

require_once($phpbb_root_path . 'includes/functions_content.php');

$sql = 'SELECT post_text, bbcode_uid
    	FROM phpbb_posts
    	WHERE post_id = '.$post_id;
$result = $db->sql_query($sql);
$row = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
decode_message($row['post_text'], $row['bbcode_uid']);
Shredder
Former team member
Сообщения: 2266
Стаж: 17 лет 9 месяцев
Благодарил (а): 283 раза
Поблагодарили: 584 раза

Re: Как очистить тест от bb кода?

Сообщение Shredder »

bbcode in ranks
Скачайте архив bbcode_strip - там как раз функция очистки от bb-кодов.

Вернуться в «Поддержка phpBB 3.0.х»