Entwickler-Ecke
Programmiersprachen (Server) - BBCodes - Quote, Size, Color, Code parsen?
Wolle92 - Mo 01.09.08 13:25
Titel: BBCodes - Quote, Size, Color, Code parsen?
Hallo,
mal ne Frage an die Web-Programmierer:
Es gibt ja BBCodes wie Quote, Size etc. Die einen Parameter haben (können)
Nun haben Boards ja die Kontrolle, ob es gleich viele öffnende, wie schließende Tags gibt, das ist auch nicht das Problem...
Mein Problem ist eher: Wie kriege ich die entsprechenden Codes nach HTML geparst?
Weil ich ja zuerstmal den [size= in den entsprechenden Code ändere, dann hab ich aber das Problem, was ich mit dem ] am ende anfangen soll... dazwischen steht die Zahl, aber die kann ja beliebig sein...
Kann mir da jemand nen Tipp geben?
einfach alle [ in < und alle ] in > zu ändern führt ja zu Problemen, wenn man nen Fehler bei den Tags hat...
Danke im Vorraus,
Wolle
Wolle92 - Mo 01.09.08 15:10
Okay, ich baus mal ein gucke wies wird...
@Irgendwer ders hier weiß: Wie läuft das denn hier im Forum?
Wolle92 - Mo 01.09.08 18:07
irgendwie versteh ich die callback-funktionen nicht wirklich...
Wolle92 - Mo 01.09.08 18:30
was callback-funktionen sind, das weiß ich, nur nicht, wie die bei dem Parser aufgebaut sein müssen...
Bin halt mal wieder etwas zu doof ;)
Yogu - Mo 01.09.08 20:57
Wolle92 hat folgendes geschrieben: |
Wie läuft das denn hier im Forum? |
Wie die erste Footer-Zeile verkündet:
Entwickler-Ecke.de 3.1.5 based on phpBB
Du kannst dir natürlich auch
phpBB [
http://www.phpbb.com] anschauen, aber das sind sehr, sehr viele Dateien. Bis du da den Teil gefunden hast, der den BBCode parst, ist einige Zeit verstrichen. Vor allem, weil phpBB3 auch noch benutzerdefinierte Tags unterstützt.
Wolle92 - Mo 01.09.08 21:03
Hm, ok, lassen wir das mit hier... ;)
BenBE - Fr 05.09.08 13:00
Die Callbacks in PHP sind recht einfach:
Quelltext
1: 2:
| $Callback = 'Funktionsname'; $Callback($Param1, $Param2); |
bzw. für Klassen:
Quelltext
1: 2:
| $StaticCallback = array('Classname', 'Methodname'); $StaticCallback($Param1, $Param2); |
Quelltext
1: 2:
| $DynamicCallback = array($Instance, 'Methodname'); $DynamicCallback($Param1, $Param2); |
DarkHunter - Di 09.09.08 09:03
RegExe sind ein ein ungeheuer mächtige Werkzeug um das zu bewerkstelligen.
Also angenommen, es geht um das tag
Quelltext
1:
| <span style="font-size: 6px; line-height: normal">Ein Text in Schriftgröße 6</span> |
Dann wäre ein passendere Regex um das Ding zu finden:
Quelltext
1:
| \[size=(\d*)\](.*)\[\/size\] |
das ganze in die funktion
preg_replace() [
http://de.php.net/preg_replace] gepackt und schon werden alle [size]-Tags in
<span style="font-size:6pt">Ein Text in Schriftgröße 6</span> umgewandelt
Quelltext
1: 2: 3: 4: 5:
| $text = preg_replace( '/\[size=(\d*)\](.*)\[\/size\]/i', '<span style="font-size:\\1pt>\\2</span>', $text ); |
Das kann man dann natürlich beliebig für andere Tags wiederholen. Streckt den Code zwar ein wenig, aber es erfüllt seinen Zweck.
Zum Verständnis von RegExen empfehle ich
diese Seite [
http://www.regenechsen.de/phpwcms/index.php?regex_allg_einf]
BenBE - Di 09.09.08 12:25
Wobei phpBB hier noch (?R) nutzt, d.h. Rekursiv matcht, um bei verschachtelten Regechsen das richtige Ende zu finden ...
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!