BBCode-Converter
September 2009
Diese Funktion dient dazu, einen mit BBCode formatierten Text in HTML umzuschreiben.
Hier sind nur wenige Tags aufgelistet. Die Funktion lässt sich beliebig erweitern.
Anwendung des BBCodes:
Daneben gibt es noch ein bisschen komplexere Umwandlungen, wenn zum Beispiel alle in einander verschachtelten Zitat-Blöcke geparst werden sollen:
Oder wenn eine (mehrsimensionale) Liste à [list] [*]Punkt 1 [*]Punkt 2 [/list] entstehen soll, dann muss schon eine Callback-Funktion ran:
Ähnlich lassen sich auch Code-Blöcke mit PHP-Syntax-Highlighting erstellen:
Zusätzlich kann man auch noch Smilies in Grafiken umwandeln:
Siehe auch:
Hier sind nur wenige Tags aufgelistet. Die Funktion lässt sich beliebig erweitern.
<?php
function bbc2html($tmpText){
/*[b]*/ $tmpText = preg_replace('#\[b\](.*)\[/b\]#isU', '<b>$1</span>', $tmpText);
/*[i]*/ $tmpText = preg_replace('#\[i\](.*)\[/i\]#isU', '<i>$1</span>', $tmpText);
/*[u]*/ $tmpText = preg_replace('#\[u\](.*)\[/u\]#isU', '<span style="text-decoration:underline">$1</span>', $tmpText);
/*[color]*/ $tmpText = preg_replace('#\[color=(.*)\](.*)\[\/color\]#isU', '<span style="color:$1;">$2</span>', $tmpText);
/*[size] */ $tmpText = preg_replace('#\[size=([0-9]{1,2})\](.*)\[\/size\]#isU', '<span style="font-size:$1px;">$2</span>', $tmpText);
/*[font] */ $tmpText = preg_replace('#\[font=(.*)\](.*)\[\/font\]#isU', '<span style="font-family:$1;">$2</span>', $tmpText);
/*[url]*/ $tmpText = preg_replace('#\[url=(.*)\](.*)\[\/url\]#isU', '<a href="$1">$2</a>', $tmpText);
/*[url]*/ $tmpText = preg_replace('#\[url\](.*)\[\/url\]#isU', '<a href="$1">$1</a>', $tmpText);
/*[img]*/ $tmpText = preg_replace('#\[img\](.*)\[\/img\]#isU', '<img src="$1" alt="Bild" />', $tmpText);
/*[center]*/ $tmpText = preg_replace('#\[center\](.*)\[\/center\]#isU', '<div style="text-align:center">$1</div>', $tmpText);
/*[right] */ $tmpText = preg_replace('#\[right\](.*)\[\/right\]#isU', '<div style="text-align:right">$1</div>', $tmpText);
return $tmpText;
}
?>
Anwendung des BBCodes:
Tag | Name | Anwendung mit Beispiel |
[b] | fett | [b]Text[/b] |
[i] | kursiv | [i]Text[/i] |
[u] | unterstrichen | [u]Text[/u] |
[color] | Textfarbe | [color=olive]Text[/color] |
[size] | Textgrösse | [size=8]Text[/size] |
[font] | Schriftart | [font='courier new']Text[/font] |
[url] | Hyperlink | [url]http://domain/[/url] [url=http://domain/]Text[/url] |
[img] | Bild | [img]http://pfad.zum/bild.jpg[/img] |
[center] | zentriert | [center]Text[/center] |
[right] | rechts | [right]Text[/right] |
Daneben gibt es noch ein bisschen komplexere Umwandlungen, wenn zum Beispiel alle in einander verschachtelten Zitat-Blöcke geparst werden sollen:
<?php
/*[quote]*/
while(preg_match('#\[quote\](.*)\[\/quote\]#isU', $tmpText))
$tmpText = preg_replace('#\[quote\](.*)\[\/quote\]#isU', '<div class="quote">$1</div>', $tmpText);
?>
Oder wenn eine (mehrsimensionale) Liste à [list] [*]Punkt 1 [*]Punkt 2 [/list] entstehen soll, dann muss schon eine Callback-Funktion ran:
<?php
/*[list]*/
while(preg_match('#\[list\](.*)\[\/list\]#is', $tmpText)){
$tmpText = preg_replace_callback('#\[list\](.*)\[\/list\]#isU',
create_function('$str',"return str_replace(array(\"\\r\",\"\\n\"),'','<ul>'.preg_replace('#\[\*\](.*)\$#isU',
'<li>\$1</li>',preg_replace('#\[\*\](.*)(\<li\>|\$)#isU','<li>\$1</li>\$2',preg_replace('#\[\*\](.*)(\[\*\]|\$)#isU',
'<li>\$1</li>\$2',\$str[1]))).'</ul>');"), $tmpText);
$tmpText = preg_replace('#<ul></li>(.*)</ul>(<li>|</ul>)#isU', '<ul>$1</ul></li>$2', $tmpText); // Validitäts-Korrektur
}
?>
Ähnlich lassen sich auch Code-Blöcke mit PHP-Syntax-Highlighting erstellen:
<?php
/*[php]*/
$tmpText = preg_replace_callback('#\[php\](.*)\[/php\]#isU',
create_function('$str','return highlight_string($str[1], true);'),
$tmpText);
?>
Zusätzlich kann man auch noch Smilies in Grafiken umwandeln:
<?php
/* :) */ $tmp_text = str_replace(':)', '<img src="smilies/happy.gif" alt=":)" />', $tmp_text);
/* :D */ $tmp_text = str_replace(':D', '<img src="smilies/laugh.gif" alt=":D" />', $tmp_text);
/* ;) */ $tmp_text = str_replace(';)', '<img src="smilies/wink.gif" alt=";)" />', $tmp_text);
/*etc.*/
?>
Siehe auch:

Andere Einträge
- Dateiendung erkennen
- Ersetzen ohne HTML zu zerstören
- array_map_recursive()
- IP verkürzen
- is_utf8() – auf UTF-8 prüfen
Kommentare
#1
von habbo-helfer am 21.03.2013
Sehr gut gemacht. :).