Помогите вырезать bb код из сообщения при выводе на главную

Форум для авторов модов для phpBB 3.0.x. Здесь можно попросить помощи в разработке у коллег.
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
burtom
phpBB 1.2.1
Сообщения: 23
Стаж: 18 лет 3 месяца

Помогите вырезать bb код из сообщения при выводе на главную

Сообщение burtom »

Привет всем

Стоит phpbb 3 + danneo. На главной сайта хочу вывести название темы + текст первого сообщения (блок новости).

В общем все сделал, кроме вырезания bb кода.

Вот полный текст кода:

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

<?php
/* ==================================================== ##
##             COPYRIGHTS © DANNEO PHP TEAM             ##
## ==================================================== ##
## PRODUCT : CMS(CONTENT MANAGEMENT SYSTEM)             ##
## LICENSE : GNU 2(General Public License v.2)          ##
## TECHNOLOGIES : PHP & MySQL                           ##
## WWW : www.danneo.com | www.danneo.org                ##
## E-MAIL : help@danneo.com                             ##
## ==================================================== */

if(!defined("DNREAD")) exit();
    global $db,$conf,$api;
    $forum_style = "prosilver"; //Cтиль форума
    $limit = 5; //Количество последних сообщений
    $forum_pref = "phpbb_"; //Префикс таблиц форума
    $date_format = 1; // Формат даты (0 - дата без времени, 1 - дата с временем)
    $only_forums = '25'; // выводить темы из форумов с данными ИД, разделять запятыми

    $block_cont = "";
    $block_cont.="<table border=\"0\" width=\"100%\" cellspacing=\"0\" cellpadding=\"0\">";

    $inq = $db->query( "
SELECT t.forum_id, t.topic_id, t.topic_last_post_id, t.topic_title, t.topic_views, t.topic_replies, t.topic_last_post_time,
    t.topic_last_poster_id, t.topic_last_poster_name, t.topic_poster, t.topic_first_poster_name, t.topic_last_post_subject, t.topic_time, t.topic_first_post_id, p.post_text, p.post_id

    FROM ".$forum_pref."topics AS t , ".$forum_pref."posts AS p
    WHERE t.forum_id in (" . $only_forums .") AND p.post_id = t.topic_first_post_id
    ORDER BY topic_time DESC LIMIT 0, $limit");

   while ($row = $db->fetchrow($inq)) {

    if(strlen($row['topic_title']) > 100) {
    $title_topic = "".substr($row['topic_title'], 0, 90)."...";
    } else {
    $title_topic = $row['topic_title'];
    }
     if(strlen($row['post_text']) > 260) {
    $text_post = "".substr($row['post_text'], 0, 255)."...";
    } else {
    $text_post = $row['post_text'];
    }
    $textpop = preg_replace('/\[b\](.*?)\[\/b\]/is', '', $text_post);

    $block_cont.="";
    $block_cont.="<tr><td class=\"myforum\" align=\"left\" ><b>".$api->sitetime($row[topic_time],$date_format)." : ";
    $block_cont.="<a href=\"".$conf['site_url']."/forum3/viewtopic.php?f=$row[forum_id]&t=$row[topic_id]\" title=\"$row[topic_title]\">$title_topic</a></b></td></tr>";
    $block_cont.="<tr><td><br>$textpop</td></tr>";
    $block_cont.="<tr><td><br></td></tr>";
    $block_cont.="<tr><td class=\"myforum\"><div style=\"float: left;\">Автор: <a href=\"".$conf['site_url']."/forum3/memberlist.php?mode=viewprofile&u=$row[topic_poster]\"> $row[topic_first_poster_name]</a>, Просмотров: $row[topic_views], <a href=\"".$conf['site_url']."/forum3/posting.php?mode=reply&f=$row[forum_id]&t=$row[topic_id]\" title=\"Нажмите, чтобы оставить свой комментарий\">Комментариев</a>: $row[topic_replies]<br></div><div align=\"right\"><a href=\"".$conf['site_url']."/forum3/viewtopic.php?f=$row[forum_id]&t=$row[topic_id]\"><b>Прочесть</b></a></div></td></tr><tr><td><hr></td></tr>";
    }

    $block_cont.="<tr><td><a href=\"".$conf['site_url']."/forum3/posting.php?mode=post&f=$row[forum_id]\" title=\"Для добавления новостей необходима регистрация\">Добавить новость</a> / Архивные новости <a href=\"".$conf['site_url']."/forum3/viewtopic.php?f=$row[forum_id]\">здесь</a></td></tr>";
    $block_cont.="</table>";

    return $block_cont;
?>
Для вырезания bb кода использую preg_replace

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

 $textpop = preg_replace('/\[b\](.*?)\[\/b\]/is', '', $text_post);
Но данный код вырезает только [] и :. Как вырезать весь код? Я бы и сам сделал, если бы понял логику и какие символы необходимо использовать, чтобы вырезать все по маске.
Аватара пользователя
Rayden
Former team member
Сообщения: 3739
Стаж: 21 год 2 месяца
Поблагодарили: 44 раза

Re: Помогите вырезать bb код из сообщения при выводе на главную

Сообщение Rayden »

Причем тут раздел поддержка? Переношу. Будь внимательнее.
phpBB2 FAQ
phpBB3 FAQ
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 17272
Стаж: 20 лет 4 месяца
Откуда: Красноярск
Благодарил (а): 632 раза
Поблагодарили: 2412 раз

Re: Помогите вырезать bb код из сообщения при выводе на главную

Сообщение rxu »

burtom писал(а):Для вырезания bb кода использую preg_replace
См. includes/functions_content.php

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

/**
* Strips all bbcode from a text and returns the plain content
*/
function strip_bbcode(&$text, $uid = '')
Изображение
burtom
phpBB 1.2.1
Сообщения: 23
Стаж: 18 лет 3 месяца

Re: Помогите вырезать bb код из сообщения при выводе на главную

Сообщение burtom »

Сорри, я пока не часто на этом форуме, поэтому и ошибся с разделом.
rxu писал(а):
burtom писал(а):Для вырезания bb кода использую preg_replace
См. includes/functions_content.php

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

/**
* Strips all bbcode from a text and returns the plain content
*/
function strip_bbcode(&$text, $uid = '')
Нашел эту функцию. Взял оттуда нужный мне кусок кода. Получилось вот так:

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

$textpop = preg_replace('#\[\/?[a-z0-9\*\+\-]+(?:=(?:".*"|[^\]]*))?(?::[a-z])?\]#','',$text_post);
Но не помогло. Текст остался в bb кодами.
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 17272
Стаж: 20 лет 4 месяца
Откуда: Красноярск
Благодарил (а): 632 раза
Поблагодарили: 2412 раз

Re: Помогите вырезать bb код из сообщения при выводе на главную

Сообщение rxu »

А использовать её в оригинале не пробовали?
Изображение
burtom
phpBB 1.2.1
Сообщения: 23
Стаж: 18 лет 3 месяца

Re: Помогите вырезать bb код из сообщения при выводе на главную

Сообщение burtom »

rxu писал(а):А использовать её в оригинале не пробовали?
Ну не силен я настолько в php, чтоб вот так запросто подключить файл functions_content.php и обработать свой текст функцией strip_bbcode )) Но буду стараться сделать это.
Аватара пользователя
RedNaxi
Former team member
Сообщения: 933
Стаж: 19 лет 7 месяцев
Откуда: BeBoss.ru
Благодарил (а): 2 раза
Поблагодарили: 14 раз

Re: Помогите вырезать bb код из сообщения при выводе на главную

Сообщение RedNaxi »

include('functions_content.php');
$text=strip_bbcode($text);
примерно так.
Serg452
phpBB 1.2.1
Сообщения: 26
Стаж: 18 лет 11 месяцев
Откуда: Москва

Re: Помогите вырезать bb код из сообщения при выводе на главную

Сообщение Serg452 »

burtom
Что-нибудь получилось?

RedNaxi
Можешь чуть подробнее?
Аватара пользователя
Rayden
Former team member
Сообщения: 3739
Стаж: 21 год 2 месяца
Поблагодарили: 44 раза

Re: Помогите вырезать bb код из сообщения при выводе на главную

Сообщение Rayden »

куда уж подробнее? Готовое решение дано.
phpBB2 FAQ
phpBB3 FAQ

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