Seite 1 von 1
BBcodes aus Text entfernen, wie geht das?
Verfasst: 05.10.2007 18:28
von Helmut
Hallo,
wie kann ich die BBcodes aus einem Text (Posting) bei der Anzeige entfernen?
Im konkreten Fall verwende ich ein Forum mit einem Thema und zig Antworten dazu als Newsticker. Bei der normalen Anzeige des ganzen Textes sollen die BBcodes beibehalten bleiben, aber auf einer Vorschau z.B. 250 Zeichen lang, sollen die BBcodes herausgefiltert werden. Ich habe bis jetzt noch nichts gefunden, das mir weitergeholfen hat.
Gruß Helmut
Verfasst: 06.10.2007 11:40
von Christian_W
Schau mal in die search.php da wird genau das gemacht.
nd wenn Du die BBCodes behalten willst schau Dir auch mal das hier an: MOD:bbcode_in_search
Gruß Christian
Verfasst: 06.10.2007 14:21
von Helmut
Hallo Christian,
danke dir für den Link, das werde ich mir mal genauer anschauen. Ich habs jetzt mit "preg_replace()" gemacht, aber wie bekomme ich einen beliebigen Text mit ggf. Sonderzeichen zwischen bestimmten BBcodes wie z.B.
heraus?
Gruß Helmut
Verfasst: 06.10.2007 23:14
von Helmut
Hallo,
so ich habs jetzt hinbekommen, mein Code sieht so aus:
Code: Alles auswählen
.....
$limit = 3;
$short_to = 300;
$sql = 'SELECT p.post_subject, p.post_text, p.post_id
FROM ' . POSTS_TABLE . ' p
WHERE p.topic_id = 21
ORDER BY p.post_id DESC
LIMIT ' . $limit;
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
{
$row['post_text'] = preg_replace('/\:[0-9a-z\:]+\]/si', ']', $row['post_text']);
$zeichen1[0] ='/\[([a-z])\]/';
$zeichen1[1] ='/\[\/?([a-z])\]/';
$zeichen1[2] ='/\[(center)\]\[(size)=[0-9][0-9][0-9]\](.*?)\[\/?(size)\]\[\/?(center)\]/si';
$row['post_text'] = preg_replace($zeichen1, '', $row['post_text']);
$row['post_text'] = ( utf8_strlen($row['post_text']) > $short_to + 5 )? (utf8_substr($row['post_text'],0,$short_to) . '...') : ($row['post_text']);
$template->assign_block_vars('recenttopic2row', array(
'POST_TITLE' => censor_text($row['post_subject']),
'POST_TEXT' => censor_text($row['post_text']),
'U_NEWS_POST' => append_sid("{$phpbb_root_path}svisuite/nachrichten.$phpEx", 'n=' . $row['post_id']),
));
}
$db->sql_freeresult($result);
....
Damit werden alle BBcodes samt Text was sich zwischen "[center][size=***]" und "[/size][/center]" befindet, gelöscht. Vielleicht hat noch jemand eine Idee, den Code noch etwas zu optimieren.
Jetzt habe ich noch das Problem mit den Links wenn sich z.B. ein Link im Text befindet. Der wird ja in einen anklickbaren Link umgesetzt, aber wenn der Link dann nach einer bestimmten Länge des ausgegebenen Textes zwischen drinnen abgeschnitten wird, dann kommt es zu Problemen mit der Formatierung des Textes. Wie kann ich das Verhindern, dass der Link dann nicht abgeschnitten, sondern ganz angezeigt wird?
Gruß Helmut