WauWau: Kleine Wiki als Hilfesystem... Syntax, PHP/Perl, usw...

Hallo,

also, ich habe mir bereits mal ein kleines Hilfesystem in PHP zurechtgebaut, welches im Übrigen eine Wiki ist, also Leute können da mitschreiben, wie sie wollen - wie bei http://www.wikipedia.org.

Der verwendete Formatierungssyntax ist so eine Art BBCode, realisiert mit der "BB code parsing class" von Christian Seiler[1]. Der resultierende Syntax erscheint mir jedoch recht kompliziert[2]. Deswegen dachte ich an etwas anderes, was ich mir selbst zusammeprogrammieren wollte. Es gleicht gewissermaßen mehr dem Syntax, den die Wikipedia[3] verwendet.

Ein paar Beispielen von dingen, die sehr einfach mittels ein paar preg_replace()'s realisierbar sind:

Überschriften:          z.B.  ###Überschrift1### +++Überschrift2+++
  Link auf interne Hilfeseite
  (deren Titel erscheint):      [ID]
  Link auf interne Hilfeseite:  [ID|Linktext]
  Link:                         http://...
  Link mit eigenem Linktext:    http://...|Linktext
  Bild:                         [bild:http://...]
  Bild mit Bildbeschreibung:    [bild:http://...|Beschreibung]
  Anker:                        #Anker#
  Standartformatierungen:       _unterstrichen_  *fett*   %kursiv%
  Code darin nicht interpret.:  <keincode> ... </keincode>
  Linie:                        ----
  Taste (<kbd>):                <Taste>
  Inlinecode (<code>):          'Inlinecode'
  Spezieler Name:               ''Spezieller Name''
  Akronym (<acronym title=...)  /Abk./Ausgeschriebene Abkürzung/
  ..... usw. usw.

Genau. Schwieriger wird es beispielsweise bei Listen:

* Listenpunkt 1
  * Listenpunkt 2

Bei Wikipedia braucht man bei einer ganz einfachen Liste keine "Listenstart" und "Listenend"-Bemerkung/sonstwas hinschreiben. Wie bekomme ich es also hin, dass das obige Beispiel so

<ul>
    <li>Listenpunkt 1</li>
    <li>Listenpunkt 2</li>
  </ul>

übersetzt wird? Ich meine, eine einzelne Zeile mit "(?: *)\*(?: *)(.*)" zu finden, wäre kein Problem. Aber wie finde ich eine gesamte Liste?

Btw: Oder gar es ermöglichen, mit ** untergeordnete Listen, ***, usw. zu schreiben?

Oder zum Beispiel eine Tabelle....:

[[[
  || Reihe 1 | Zelle 2 | Zelle 3
  || Reihe 2 | Zelle 2 | Zelle 3
]]]

Hat irgendjemand eine Idee?

Wäre es vielleicht sinnvoll, wenn ich mir mal die Wikipedia[3]-Software runterladen sollte (wenn das Syntax-Zeugs in Perl geschrieben wäre, wäre es perfekt)...!?

Apropos Perl: Sind solche "Regulären-Ausdrücke-Dinger" (also replacen... usw.usw.) eigentlich in PHP langsamer als in Perl?

WauWau

[1] An dieser Stelle: Danke Christian ;-)
    Übrigens hat deine Klasse ein paar Bugs, die mir irgendwie nicht
    so gefallen ;-) Habe schon mal ein bisschen was in dem Ding ab-
    geändert, trotzdem erscheinen noch Fehlermeldung, wenn man einen
    syntaktisch falschen BBCode aufsetzt.

[2] Formatierungsmöglichkeiten: Fett, Kursiv, Unterstrichen, spezielle
    Bezeichnungen, Abkürzungen/Akronyme, Überschriften (1-6), Listen
    (aller Art), Tabellen, Präformierten Text (Block sowie inline),
    Links, internes-system-Links ("Links zu anderen Hilfeseiten")

[3] http://www.wikipedia.org

--
ss:) zu:) ls:& fo:) de:] va:) ch:° n4:( rl:( br:^ js:| ie:% fl:{ mo:|
E-Mail WauWau: [mailto:der-wauwau@gmx.de]
  1. Hallo WauWau (Hündchen, Grillhähnchen, etc.),

    Wäre es vielleicht sinnvoll, wenn ich mir mal die Wikipedia[3]-Software
    runterladen sollte (wenn das Syntax-Zeugs in Perl geschrieben wäre, wäre es
    perfekt)...!?

    Es gibt diverse Variante, reinen Text mit einer bestimmten Syntax in HTML
    Quellcode zu übersetzen, nicht nur in einem Wiki drin. Mir bekannt sind
    ReST (für: Restructured Text), Textile, ein Klassiker und relativ neu
    Markdown. Ich würde an Deiner Stelle mal nach denen googlen, wenn sie
    Dir behagen, diese einbinden, wenn nicht zumindest mal dort in den
    Quellcode gucken, wie die das machen.

    Tim

    1. Hallo Tim,

      Hallo WauWau (Hündchen, Grillhähnchen, etc.),

      *lol*.... "Grillhähnchen" ;-)

      Es gibt diverse Variante, reinen Text mit einer bestimmten Syntax in HTML
      Quellcode zu übersetzen, nicht nur in einem Wiki drin. Mir bekannt sind
      ReST (für: Restructured Text), Textile, ein Klassiker und relativ neu
      Markdown. Ich würde an Deiner Stelle mal nach denen googlen, wenn sie
      Dir behagen, diese einbinden, wenn nicht zumindest mal dort in den
      Quellcode gucken, wie die das machen.

      Ich habe auch überhaupt nicht vor, das Wikiprogramm der Wikipedia zu (be)nutzen, sondern wollte mir lediglich ein paar Auszüge aneignen, die sich mit der Umsetzung des Syntaxes kümmern.

      Dass es diverse Varianten gibt, ist mir klar. Nur ähneln meine Syntax-Vorstellung (sehr) dem Syntax der Wikipedia, das ist der Grund, weswegen ich so darauf zu sprechen komme.

      Diese "ReST" und "Markdown"-Dinger sind anscheinend auch (verbreitete) Syntaxformen? Also so mit "BBCode" vergleichbar? Genau, ich werde mal googlen - oder einfach in der Wikipedia nachschlagen *bg*

      Quellcode-schauen lohnt sich allenfalls, das werde ich dann mal machen...

      WauWau

      --
      ss:) zu:) ls:& fo:) de:] va:) ch:° n4:( rl:( br:^ js:| ie:% fl:{ mo:|
      E-Mail WauWau: [mailto:der-wauwau@gmx.de]