Christian Seiler: (ZUR INFO) Klasse zum Parsen von sog. "BB-Codes"

Hallo Forum,

Ich stand vor kurzem vor dem Problem, sog. "BB-Codes" parsen zu müssen. Ich habe ganz einfach mit ein paar regulären Ausdrücken angefangen:

Ersetze b[/b] durch <b>$1</b>, etc.

Komplexere Codes habe ich abgefangen, indem den e-Modifier von preg_replace verwendet habe, also PHP-Code ausgeführt habe, um die Ersetzung durchzuführen.

Doch diese "Lösung" stellte mich nicht wirklich zufrieden. Also habe ich alles über den haufen geschmissen (waren sowieso nur ein paar Zeilen Code) und habe einen kompletten Parser entwickelt, der diese BB-Codes "parsed" und ersetzt.

Features:

* keine vordefinierten BB-Codes => komplett personalisierbar
 * komfortabel, sobald man das Konzept mal verstanden hat
   (zumindest hoffe ich das)
 * erkennt verschiedene Syntax-Typen
 * achtet auf korrekte Verschachtelung
     => valides HTML, wenn der Programmierer es will
 * erlaubt einfache "Regeln" zum Verschachteln
   (z.B. ein Link darf nicht innerhalb eines anderen Links auftauchen)

Man könnte damit auch < und [image:, was es hier im Forum gibt nachbauen.

Wenn es jemanden interessiert, ich habe mal angefangen, das ganze zu dokumentieren:

[link:http://www.christian-seiler.de/projekte/php/bbcode/>

Download gibt es da auch, (am Ende der Seite) mein Kommentarstil innerhalb von Sourcecode ist aber nicht der tollste. Lizenz ist die Artistic License, also Open Source.

Ich würde außerdem mal gerne eure Meinung hören: Braucht die Welt wirklich so etwas? Ist das ganze zu kompliziert? Ist irgendwo eine Sicherheitslücke? Konzeptfehler? Natürlich nur, wenn ihr euch da reinarbeiten wollt...

Viele Grüße,
Christian

--
| http://www.selflinux.org/                                                  |
| http://aktuell.de.selfhtml.org/tippstricks/beitrag.htm                      |
| sh:) fo:) ch:] rl:( br:> n4:& ie:% mo:) va:) de:] zu:) fl:( js:| ss:) ls:[ |
| http://emmanuel.dammerer.at/selfcode.html                                  |
  1. Hallo Christian,

    Doch diese "Lösung" stellte mich nicht wirklich zufrieden. Also habe ich alles über den haufen geschmissen (waren sowieso nur ein paar Zeilen Code) und habe einen kompletten Parser entwickelt, der diese BB-Codes "parsed" und ersetzt.

    Klingt sehr interessant.

    Wenn es jemanden interessiert, ich habe mal angefangen, das ganze zu dokumentieren:

    Ich werd mir das bei Gelegentheit mal zu Gemüte führen, aber auf jeden Fall schon bookmarken. Ich spiele immer noch mit dem Gedanken, irgendwann in sehr ferner Zukunft doch ein ganz eigenes (das 1000. im Netz?) Board-Foren-System auf die Beine zu stellen. Da sind solche Resourcen zumindest immer lehrreich und wenn genehmigt, sicher auch Arbeitsersparnis.

    Ich würde außerdem mal gerne eure Meinung hören: Braucht die Welt wirklich so etwas? Ist das ganze zu kompliziert? Ist irgendwo eine Sicherheitslücke? Konzeptfehler? Natürlich nur, wenn ihr euch da reinarbeiten wollt...

    Es ist auf jeden Fall nicht verlorene Zeit, da es m.E. immer noch keine wirklich flexible oder perfekte Lösung für die berühmten BB-Codes gibt. Vielleicht hast Du gerade die Referenz entwickelt. :)

    Nachtliche Grüsse, Thoralf

    1. Hallo Thoralf,

      Ich werd mir das bei Gelegentheit mal zu Gemüte führen, aber auf jeden Fall schon bookmarken.

      Ich wäre über eine Mail, falls der Thread bis dahin im Archiv verschwunden ist, erfreut.

      Da sind solche Resourcen zumindest immer lehrreich und wenn genehmigt, sicher auch Arbeitsersparnis.

      Wie gesagt, die Klasse ist OpenSource.

      Es ist auf jeden Fall nicht verlorene Zeit, da es m.E. immer noch keine wirklich flexible oder perfekte Lösung für die berühmten BB-Codes gibt. Vielleicht hast Du gerade die Referenz entwickelt. :)

      Nicht gleich so euphorisch... ;-) Ich will erst mal sehen, was andere dazu sagen.

      Viele Grüße,
      Christian

      --
      | http://www.selflinux.org/                                                  |
      | http://aktuell.de.selfhtml.org/tippstricks/beitrag.htm                      |
      | sh:) fo:) ch:] rl:( br:> n4:& ie:% mo:) va:) de:] zu:) fl:( js:| ss:) ls:[ |
      | http://emmanuel.dammerer.at/selfcode.html                                  |
      1. Hallo Christian,

        Ich werd mir das bei Gelegentheit mal zu Gemüte führen, aber auf jeden Fall schon bookmarken.
        Ich wäre über eine Mail, falls der Thread bis dahin im Archiv verschwunden ist, erfreut.

        Auf jeden Fall. :)

        Da sind solche Resourcen zumindest immer lehrreich und wenn genehmigt, sicher auch Arbeitsersparnis.
        Wie gesagt, die Klasse ist OpenSource.

        Setzt zumindest bei Gnu voraus, dass auch das Ergebnis Open Source bleibt, und da bin ich noch nicht sicher, auch wenn das bei PHP (Zend aussen vor) technisch wohl immer so ist.

        Nicht gleich so euphorisch... ;-) Ich will erst mal sehen, was andere dazu sagen.

        We'll see ;)

        Gruss, Thoralf

        --
        Sic Luceat Lux!
        1. Hallo Thoralf,

          Wie gesagt, die Klasse ist OpenSource.
          Setzt zumindest bei Gnu voraus, dass auch das Ergebnis Open Source bleibt, und da bin ich noch nicht sicher, auch wenn das bei PHP (Zend aussen vor) technisch wohl immer so ist.

          Ich stelle es aber wie bereits erwähnt nicht unter die GNU GPL, sondern unter die Artistic License: http://www.perl.com/language/misc/Artistic.html Da steht:

          8. Aggregation of this Package with a commercial distribution is always permitted provided that the use of this Package is embedded; that is, when no overt attempt is made to make this Package's interfaces visible to the end user of the commercial distribution. Such use shall not be construed as a distribution of this Package.

          Du darfst die Klasse also in einem beliebigen Projekt verwenden.

          Viele Grüße,
          Christian

          --
          Ich bin ein Bandbreitenverschwender. Meine Signatur tut mir leid. Ehrlich!
          1. Hallo Christian,

            Du darfst die Klasse also in einem beliebigen Projekt verwenden.

            Das kommt bei raus, wenn man betriebsblind ist. ;) OpenSource=GNU=Ergebnis auch OpenSource. Nuja .. muss das Alter sein. ;)

            Wenn ich auf Deinen Code zurückgreife, erfährst Du das und ich verpetz Dich natürlich auch. ;)

            Gruss, Thoralf

            --
            Sic Luceat Lux!
  2. Hi Christian,

    ich werde mir deinen Artikel sofort reinziehen, da ich selbst so etwas basteln wollte... und zwar im Hinblick auf Homepage-Verwaltung... Damit eben Die Leute mehr Gestaltungsmöglichkeiten für ihre HP haben, ohne Ahnung von HTML und ohne, dass ich eingreifen muss, z.B., dass man selbst Listen erstellen kann (Natuerlich in einem Leicht verständlichem, komfortablen Formular).

    MFG

    Philipp

  3. Hallo,

    Welchen Sinn hat es, eine Abkürzung wie »z.B.« und »etc.« mit abbr/acronym auszuzeichnen? - Wieso dann überhaupt Abkürzungen verwenden? (Wäre das ein Fall für (BARRIEREFREIHEIT)?)

    »Author« schreibt sich im Deutschen »Autor«.

    »Copyright © 2003 Christian Seiler« - Kein Kommentar. ;)

    Grüße,
    Mathias

    --
    »In Anbetracht des extrem schädlichen Einflusses, der von diesem Forum ausgeht, wär's natürlich besser, es so weit zu bringen, dass es in sich kollabiert.«<img src="http://w0.extreme-dm.com/0.gif?tag=saftnase&j=n" border="0" alt="">
    1. Hallo Mathias,

      Welchen Sinn hat es, eine Abkürzung wie »z.B.« und »etc.« mit abbr/acronym auszuzeichnen? - Wieso dann überhaupt Abkürzungen verwenden?

      Hast Recht, werde ich ändern. Bei HTML und BB halte ich es allerdings schon für sinnvoll, denn "Hypertext Markup Language Code" stört m.Mn. nach nur den Lesefluss, HTML-Code ist besser. (ob es da allerdings bei jedem Sinn macht, ist die zweite Frage)

      »Author« schreibt sich im Deutschen »Autor«.

      Hoppla.

      »Copyright © 2003 Christian Seiler« - Kein Kommentar. ;)

      Warum? (Jetzt komme mir aber bitte nicht damit, dass es in Deutschland kein Copyright gibt, das ist mir auch klar)

      Viele Grüße,
      Christian

      --
      | http://www.selflinux.org/                                                  |
      | http://aktuell.de.selfhtml.org/tippstricks/beitrag.htm                      |
      | sh:) fo:) ch:] rl:( br:> n4:& ie:% mo:) va:) de:] zu:) fl:( js:| ss:) ls:[ |
      | http://emmanuel.dammerer.at/selfcode.html                                  |
      1. Hallo, Christian,

        [abbr bei HTML und BB] (ob es da allerdings bei jedem Sinn macht, ist die zweite Frage)

        http://www.w3.org/TR/WAI-WEBCONTENT/#tech-expand-abbr reicht m.E. aus.

        »Copyright © 2003 Christian Seiler« - Kein Kommentar. ;)

        Warum? (Jetzt komme mir aber bitte nicht damit, dass es in Deutschland kein Copyright gibt, das ist mir auch klar)

        Was bezweckst du mit der Floskel? Ich nehme an, dass du genausowenig wie ich und deine Besucher weißt, welche konkrete rechtliche Relevanz sie hat; sie desinformiert lediglich. Abgesehen davon fallen mir zur Vermittlung der übrigen möglichen Bedeutungen, die du damit beabsichtigen magst, andere, verständlichere und erfolgreichere Methoden ein.

        Wenn du über die Bedingungen der Nutzung informieren willst, dann erkläre deine Lizenz auf Deutsch und kennzeichne sie stärker als das Dokument, welches die erlaubte Weiterverwendung beschreibt (»ich verteile diese Klasse unter ...« ist unklar), aber verwirre nicht mit nichtssagenden Copyright-Symbolen. Falls du nur deinen Namen unter das Dokuments schreiben wolltest - wieso tust du das nicht?

        Siehe auch </archiv/2002/10/25536/#m139978> und </archiv/2002/10/25536/#m140244>.

        Grüße,
        Mathias

        --
        »In Anbetracht des extrem schädlichen Einflusses, der von diesem Forum ausgeht, wär's natürlich besser, es so weit zu bringen, dass es in sich kollabiert.«<img src="http://w0.extreme-dm.com/0.gif?tag=saftnase&j=n" border="0" alt="">
        1. Hallo Mathias,

          Ich habe jetzt Deine Ratschläge mir durch den Kopf gehen lassen und diese dann umgesetzt. Allerdings habe ich den Sourcecode nicht modifiziert, da in der Lizenz ausdrücklich etwas von "Copyright-Hinweisen" steht und ich ganz klar machen will, was die Lizenz damit meint.

          Viele Grüße,
          Christian

          --
          Ich bin ein Bandbreitenverschwender. Meine Signatur tut mir leid. Ehrlich!
  4. Hallo Christian,

    Wenn es jemanden interessiert, ich habe mal angefangen, das ganze zu dokumentieren:

    http://www.christian-seiler.de/projekte/php/bbcode/

    Download gibt es da auch, (am Ende der Seite) mein Kommentarstil innerhalb von Sourcecode ist aber nicht der tollste. Lizenz ist die Artistic License, also Open Source.

    Das hört sich gut an. Da ich in absehbarer Zeit 'eh BB-Code[tm] oder Ähnliches hätte benutzen wollen (Die nächste Bewertung für mich hier kommt bestimmt ;-)) kommt mir das entgegen und ich denke, dass ich das ganze ausführlich testen werde. Ich habe die Source eben erstmal überflogen, aber es sah doch erfrischend simpel aus ;-)

    Ich würde außerdem mal gerne eure Meinung hören: Braucht die Welt wirklich so etwas? Ist das ganze zu kompliziert? Ist irgendwo eine Sicherheitslücke? Konzeptfehler? Natürlich nur, wenn ihr euch da reinarbeiten wollt...

    Ja, die Welt braucht das sicher, grade da nicht jeder das Rad neu erfinden will. Ich nehme mich selbser da mal nicht aus, obwohl ich ja gerne selber kniffle ;-)

    Zum Weiteren werde ich mich an dich (oder das Forum, wenn's so (ge-)wichtig wird) wenden, wenn ich ein wenig damit gespielt habe. Der Ansatz ist - ich bleibe dabei - höchst interessant.

    Grüße aus Barsinghausen,
    Fabian

  5. Hallo Nochmal,

    http://www.christian-seiler.de/projekte/php/bbcode/

    Ich habe die Klasse jetzt noch etwas überarbeitet und noch ein paar "häufig gestellte"[tm] Fragen eingefügt.

    Viele Grüße,
    Christian

    --
    Ich bin ein Bandbreitenverschwender. Meine Signatur tut mir leid. Ehrlich!