Parser für eigene Tags wie BB Code

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Parser für eigene Tags wie BB Code

    Hallo

    ich möchte eine Seite schreiben auf für die man die Menüs ohne HTML Kenntnisse erstellen und bearbeiten kann.

    Ich habe mir überlegt dazu einen Code aus eigenen Tags in die Datenbank zu schreiben und diesen dann auszuwerten und die gewünschten Menüs anzuzeigen.

    Es soll in etwa so aussehnen:

    <menu>
    <menupunkt> Navigation </titel></menupunkt>
    <menupunkt> <link aim=index.php> Home </link> </menupunkt>
    <menupunkt> <link aim=login.php> Login </link> </menupunkt>
    </menu>

    Nun suche ich eine Möglichkeit diesen Code zu parsen und auszuwerten um dann daraus eine Tabellenstruktur zu erstellen und Links einzufügen.
    Allerdings reicht es nicht aus nur die Wörter zu ersetzen (z.B. das Wort menu gegen table tauschen) da es möglich sein muss den Aufbau der Menüs im nachhinein zu bearbeiten also neue einfügen und Alte herrausnehmen/ändern.

    Ich hoffe jemand kann mir einen guten Lösungsansatz zeigen.
    Danke schon im vorraus.

  • #2
    Wenn es bei der vorgeschlagenen Code Konvention bleibt, sprich es im Endeffekt XML ist, könntest du SimpleXML (etc.) nehmen und das ganze in einen Array lesen. Dieses musst du halt dann entsprechend durchlaufen und prüfen wo du, entsprechend deinem Tag, was machen musst.

    Kommentar


    • #3
      Der Ansatz is schon mal ganz gut nur habe ich auf meinem Webserver leider kein PHP5 und wollte es auch komplett selbst schreiben.

      Wäre klasse wenn es eine Möglichkeit gibt einen Parser komplett (mit dem Funktionsumfang von PHP4 selbst zu schreiben).

      Habe jetzt schon stundenlang gegoogelt aber ich finde immer nur Dokus mit vorgefertigten Funktionen, einen Ansatz zur Umsetzung eines eigenen Parsers suche ich immer noch verzweifelt.

      Kommentar


      • #4
        http://de3.php.net/xml -> ab php 3


        Wenn du wirklich ALLES selbst machen willst, setz dich mit Parserprogrammierung auseinander.
        http://de.wikipedia.org/wiki/Parser

        Kommentar


        • #5
          Es gibt Syntaxdiagramme, und nach denen kann man parser schreiben. zB sind die ursprünglichen Pascal und Modula Compiler so aufgebaut. Auch für arithmetische Ausdrücke ist das Schulstoff (dh Informatikgrundstudium).

          Deine Menüsprache ist gut mit Syntaxdiagrammen zu zeichnen.

          Der Parser ist zweistufig. In der ersten Stufe verwandelt man den Text in Terminalsymbole, als Aufzählungstypen. z.B. kann die Sequenz <menu> die Konstante TMENU geben, und Navigation gibt TSTRING mit dem Attribut 'Navigation' und soweiter. In der zweiten Stufe verfolgt man die Nichtterminalsymbole anhand der Syntaxdiagramme und macht die Codeproduktion oder Ausgabe des 'binär'-Codes.

          Aktuelle Tutorials oder so habe ich nicht, aber die Stichworte Terminalsymbol, Nichtterminalsymbol, Syntaxdiagramm, Look-ahead könnten helfen.

          Kommentar


          • #6
            ich glaube nicht, dass der op tatsächlich einen parser schreiben möchte.

            aufgrund seiner problemstellung reicht meines erachtens ein str_replace() aus. wenn nicht, kann mich der op gerne berichtigen.

            ansonsten kann man auch mittels preg_match_all() rekursiv sehr schöne objektbäume aufspannen, so habe ich es zumindest in meiner template engine umgesetzt.

            Kommentar


            • #7
              es ist bekannt, dass man mit regexp dasselbe machen kann wie mit einem traditionellen look-forward(1) parser. Im quäker-tut werden arithmetische Ausdrücke geparst. Je nach Wissensstand op kann er das auch machen. Es i s t damit ein vollständiger parser.

              wenn op einen parser schreiben möchte für etwas, wo es nicht nötig ist, so legt er sich grundlagen für den Fall, wo es nötig ist. und interessant ist es alleweilen.

              Kommentar


              • #8
                ich möchte eine Seite schreiben auf für die man die Menüs ohne HTML Kenntnisse erstellen und bearbeiten kann.
                Naja..

                Warum nicht auf was fertiges zurückgreifen:
                http://www.christian-seiler.de/proje...ode/index.html
                Wir werden alle sterben

                Kommentar


                • #9
                  Ja ich würder gerne alles selbst machen, also einen eigenen Parser schreiben.
                  Bei so vielen Ansätzen muss ich erst mal alles druchgucken bevor ich mich für einen Weg entscheide.

                  3DMax: Str_replacer wird nicht reichen da man die Menüs nicht direkt über die Eingabe von Befehlen in der "neuen" Sprache erstellt, sondern dies nur die Form ist in welcher diese in der Datenbank liegt. Es soll über ein HTML Interface editierbar sein somit kommt man um ein Parsen nich herrrum.

                  gleiwitz19: Mit den Stichworten von deinem ersten beitrag habe ich schon einige inetressante Sachen gefunden. Aber das von dir erwähnte "quäker" Tutroial habe ich nicht gefunden, wäre nett wenn du einen Link dazu posten könntest. Und du hast recht ich möchte das Problem auch mit einem Parser lösen um einfach schon Erfahrungen in diesem Gebit zu haben.

                  combie: Es soll genau an meine Bedürfnisse angepasst sein und nicht mehr können als ich brauch (Performance). Ich mag es gar nicht vorgefertigte Scripte für ein eigenes Projekt zu verwenden. Ausserdem sollen auch ganze Module (Z.B. ein Counter) eingefügt werden können und man will ja auch was nützliches lernen.

                  Kommentar


                  • #10
                    http://tut.php-q.net/online.html = 'Quäker' Tutorial. Dort im Abschnitt über Rekursion/ Taschenrechner.

                    Kommentar

                    Lädt...
                    X