вырезать bbcode phpbb

ЪЪ
На сайте с 12.05.2010
Offline
4
1149

собственно на главной сайта буду выводить последние сообщения с форума, в phpbb есть функция как я догадываюсь для этих целей

function strip_bbcode(&$text, $uid = '')

{
if (!$uid)
{
$uid = '[0-9a-z]{5,}';
}

$text = preg_replace("#\[\/?[a-z0-9\*\+\-]+(?:=(?:".*"|[^\]]*))?(?::[a-z])?(\:$uid)\]#", ' ', $text);

$match = get_preg_expression('bbcode_htm');
$replace = array('\1', '\1', '\2', '\1', '', '');

$text = preg_replace($match, $replace, $text);
}

но не совсем понятно что содержится в переменной $match. помогите определить что в ней, не хочется подключать к главной есче несколько файлов с функциями ради всего 2. или помогите с регуляркой чтобы вырезать bbcode тут функция целая собственно и не нужна.. кто не юзает phpbb привожу пример исходного текста с bbbcode

[b:3lqe08aa]текст[/b:3lqe08aa]текст[code:3lqe08aa]текст[/code:3lqe08aa] [quote:3lqe08aa]текст[/quote:3lqe08aa]
Sapega
На сайте с 09.02.2009
Offline
68
#1

Даже и не знаю, столько телодвижений...

Раньше пользовался подобным:

$text = preg_replace("/\[[0-9A-Za-z:\/=\"\.\-\*~]*\]/i", "", $text);

и этого для большинства целей было достаточно. Но все это относится к phpBB2. Если брать phpBB3, то может быть я и не учел чего-то.

M
На сайте с 20.08.2004
Offline
376
#2
#########################################################################
function last_themes_forum($qty)
{
#global $sql, $base_url_to_email;
include_once $_SERVER["DOCUMENT_ROOT"]."/forum/config.php";
$sql_link = @mysql_connect($dbhost, $dbuser, $dbpasswd);

$result = @mysql_query("SET NAMES 'cp1251'", $sql_link);

$query = "SELECT t.topic_id, t.topic_replies, t.topic_views, t.topic_title, t.topic_last_post_id, p.post_time FROM
`".$dbname."`.".$table_prefix."topics AS t, `".$dbname."`.".$table_prefix."posts AS p
WHERE t.forum_id NOT IN (0, 9, 28)
AND p.topic_id = t.topic_id
AND p.post_id = t.topic_last_post_id
AND t.topic_moved_id = 0
ORDER BY t.topic_last_post_id DESC
LIMIT ".$qty;
$result = @mysql_query($query, $sql_link);
$tmp = "";
#last_post_
$tmp = array();
while ($rec = @mysql_fetch_array($result))
{
$tmp[] = array ("topic_id"=>$rec['topic_id'], "topic_title"=>$rec['topic_title'], "topic_replies"=>$rec['topic_replies'], "topic_views"=>$rec['topic_views']);
#$tmp .= "<a href='".$base_url_to_email."forum/viewtopic.php?t=".$rec['topic_id']."'>".$rec['topic_title']."</a>";
}
return $tmp;

}

пользуйтесь.

вот это учтите - WHERE t.forum_id NOT IN (0, 9, 28) - что бы не выводить инфу с модераторских разделов :)

Miracle добавил 23.06.2010 в 12:27

и еще не забывайте кешировать, если не сейчас то в будущем это встанет ребром :)

отец сыночка, лапочки дочки и еще одного сыночка
ЪЪ
На сайте с 12.05.2010
Offline
4
#3

Miracle, спасибо конечно :) , но это функция выводит только ссылки на последние топики, а я вывожу: топик >> часть сообщения в топике, но вот сообщения с bbcode, Sapega регулярка почти то что нужно, так как обрезает текст содержащий [b:3lqe08aa]текст[/b:3lqe08aa] в просто "текст" а вот к примеру bbcode с картинкой имеет вид [img:3lqe08aa]http://site.com/img.jpg[/img:3lqe08aa]. соответсвенно ссылка на картинке остается...

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий