verbesserter BBCode, vor allem [CODE]

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

  • verbesserter BBCode, vor allem [CODE]

    Hi. Ich habe heute mich ein wenig in reguläre Ausdrück eingearbeitet und auch BBCodes interpretiert, ähnlich wie es auch hier oder einem beliebigen anderen Burning Board funzt. Auch die Probleme mit dem BBCode [CODE] sind mir aufgefallen und ich habe probiert, es besser zu machen:
    - andere BBCodes innerhalb von CODE werden nicht interpretiert
    - URLs und E-Mail-Adressen werden innerhalb von CODE nicht verlinkt
    - Smilies werden innerhalb von CODE nicht interpretiert
    - Zeilen sind nummeriert
    - Zeilen werden nicht umgebrochen. Die Seite wird trotzdem nicht verbreitert (dank IFrames)
    - Mehrere Leerzeichen und Tabulatoren hintereinander werden entsprechend ausgegeben und nicht HTML-typisch zu einem Leerzeichen zusammengefasst.

    Was ich überhaupt mit dem Thread will, ist Bugs finden und mit eurer Hilfe weitere Verbesserungen durchführen. Bei Interesse poste ich dann auch den etwas umfangreicheren Source Code.

    Testen könnt ihr das ganze hier:
    http://www.zocknews.com/readnews.php?id=1191

  • #2
    Ach ja, doppelte Backslashes sollten jetzt auch innerhalb von Code korrekt ausgegeben werden.

    Kommentar


    • #3
      Hab jetzt auf Anhieb irgendwie keinen Code gefunden.

      Kommentar


      • #4
        Mit Code meinte ich den BBCode [CODE].
        Hat jemand Interesse am Quellcode? Da lässt sich bestimmt einiges optimieren.

        Kommentar


        • #5
          Was soll man den sonst testen?

          Kommentar


          • #6
            Muss ich diese Frage verstehen?

            Egal, ich hab jetzt mal das Script angehangen. Zum selbst probieren einfach bbcode_n_smilies.inc.php includen und die Funtkion bbcode_n_smilies() aufrufen. Sie erwartet als ersten Parameter den Text und als zweiten eine ID. Das kann eine ganz normale Zahl sein die beim Auslesen z.B. von Kommentaren bei jedem Kommentar um eins erhöht wird.

            Hier ein Beispiel:
            Code:
            ...
            include("bbcode_n_smilies.inc.php");
            $i = -1;
            
            while ($comment = mysql_fetch_array($com_handle)) {
            $i++;
            $comment[text] = bbcode_n_smilies($comment[text],$i);
            // und jetzt noch das Ausgeben des Kommentares. Ihr wisst bestimmt wie das geht. ;)
            }
            ...
            Angehängte Dateien
            Zuletzt geändert von dazio; 01.12.2002, 16:24.

            Kommentar


            • #7
              Das ist gut!

              Du wolltest ja, dass wir dir bei Bugs bescheid sagen. Also brauchen wir ja den Code um welche zu finden.

              Wenn der Code geprüft ist, würde ich mich freuen, wenn zu ihn in den Code-Snippets postest.

              Kommentar


              • #8
                Klar, das hatte ich sowieso vor.

                Ich habe übrigens noch etwas anderes verbessert. Dadurch dass alle BBCodes bei mir durch unterschiedliche HTML-Tags ersetzt werden, werden zum Beispiel [/color] und [/size] bei Überlappung nicht irrelevant, wie es hier im Forum ist:

                [size=3] groß [color=red] groß und rot [/size] rot [/color]
                wird zu:
                groß [color=red] groß und rot rot [/color]

                Das liegt daran, dass [/color] und [/size] hier durch </font> ersetzt werden, wodurch eine Überlappung nicht möglich ist.

                Und jetzt testet es mal hier. Ihr müsst aber [big] groß [color=red] groß und rot [/big] rot [/color] nehmen, da ich [size] durch [big] bzw. [small] ersetzt habe. Um hier und bei mir die gleichen Bedingungen zu nehmen, könnt ihr die Überlappung ja auch mit [font] und [color] testen.

                Kleines Problem:
                Im Moment müssen BBCodes bei mir klein geschrieben werden! Ich könnte zwar einfach beispielsweise color|COLOR in den regulären Ausdruck schreiben. Aber gibt es nicht auch eine Möglichkeit, dass Groß- und Kleinschreibung bei preg_replace (wie bei eregi_replace) keine Rolle spielt?
                Zuletzt geändert von dazio; 30.11.2002, 09:16.

                Kommentar


                • #9
                  Original geschrieben von dazio
                  Kleines Problem:
                  Im Moment müssen BBCodes bei mir klein geschrieben werden! Ich könnte zwar einfach beispielsweise color|COLOR in den regulären Ausdruck schreiben. Aber gibt es nicht auch eine Möglichkeit, dass Groß- und Kleinschreibung bei preg_replace (wie bei eregi_replace) keine Rolle spielt?
                  jupp: Modifier i (PCRE_CASELESS)
                  Hab ich auch bei meiner Antwort in Trashar´s Thread benutzt.
                  mein Sport: mein Frühstück: meine Arbeit:

                  Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

                  Kommentar


                  • #10
                    Ups, das hatte ich teilweise schon drin, ohne zu wissen, was es bringt.
                    Jetzt ist es bei allen Abfragen mit dabei. Aktualisiertes Script ist im Anhang.

                    Nächstes Problem:
                    Ich hab preg_replace jeweils so oft ausgeführt, wie der Code (Bsp. "[color=") gefunden wurde. Wenn ich es nur einmal aufrufe, werden nicht alle ersetzt. Muss das so sein?
                    Angehängte Dateien
                    Zuletzt geändert von dazio; 01.12.2002, 16:24.

                    Kommentar


                    • #11
                      Original geschrieben von dazio
                      Nächstes Problem:
                      Ich hab preg_replace jeweils so oft ausgeführt, wie der Code (Bsp. "[color=") gefunden wurde. Wenn ich es nur einmal aufrufe, werden nicht alle ersetzt. Muss das so sein?
                      Lies mal unter Regular Expression Functions (Perl-Compatible) > Pattern Syntax den Abschnitt über "Recursive patterns", das sollte Dir weiter helfen.
                      mein Sport: mein Frühstück: meine Arbeit:

                      Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

                      Kommentar


                      • #12
                        Sorry, dort steig ich gar nicht durch. Hab eben erst mit den regulären Ausdrücken angefangen.
                        Kann mir jemand das was da steht auf den konkreten Fall übertragen?
                        Im Anhang die neuste Version. Ich hab nen Darstellungsfehler bei [code] behoben. Außerdem hab ich [nobb] hinzugefügt, da gibt es aber Konflikte in Kombination mit [code]. Da weiß ich momentan auch nicht weiter.
                        Angehängte Dateien

                        Kommentar


                        • #13
                          *hochschieb*

                          So, ich hab alles noch einmal überarbeitet, so dass es zumindest funktionieren sollte.
                          "Recursive patterns" habe ich nicht hinbekommen und [nobb] habe ich wieder entfernt, da es nur Probleme mit sich brachte und sowieso keinen Nutzen hat. Den gleichen Effekt kann man ja mit [code] erreichen.
                          Es sind auch neue Features enthalten (siehe readme.html). Die Dateien und diesmal auch eine Installationsanleitung (readme.html), eine Featureliste (readme.html) und die Bilder zu den Smilies habe ich gezippt und an diesen Beitrag angehängt.

                          Es wäre nett wenn es mal jemand ausprobiert, denn ich musste einige Dinge, die nur bei meiner Testseite funzn, entfernen oder umschreiben und bin mir nicht sicher ob es nun wirklich geht.
                          Außerdem hoffe ich immer noch, dass sich mal jemand mit Ahnung den Code anschaut und ein wenig optimiert.

                          Weiter getestet werden kann natürlich hier:
                          http://www.zocknews.com/readnews.php?id=1191
                          Angehängte Dateien
                          Zuletzt geändert von dazio; 04.12.2002, 13:34.

                          Kommentar


                          • #14
                            Ich habe mal eine Frage:

                            Kann man diese Funtktion nicht noch um [ u r l ] erweitern?

                            Kommentar


                            • #15
                              bestimmt!

                              Kommentar

                              Lädt...
                              X