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


Yogu - Mo 01.09.08 14:29

Google mal nach Suche bei Google BBCODE PARSER PHP. Das erste Ergebnis sieht recht vielversprechend aus: BBCode-Parserklasse für PHP [http://www.christian-seiler.de/projekte/php/bbcode/]


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...


Delete - Mo 01.09.08 18:10

Guck mal hier:http://www.michael-puff.de/Artikel/Callback.shtml


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

user profile iconWolle92 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 ...