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

Beitrag lesen

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]