Julius: wozu blog software ?

Beitrag lesen

Hallo mermshaus,

Das ist leider alles nicht so leicht, dass man das mal eben aus dem Ärmel schüttelt, weil es immer Cornercases gibt. In HTML sind das zumindest Script-Tags und Kommentare, die Winkelklammern enthalten können. In PHP-Code kann auch ein ?> in einem String oder einem Kommentar stehen und damit keine syntaktische Funktion ausüben.

Mist, dann müsste ich ja dem HTML-Highlighter die PHP-Syntax „beibringen“, damit der so etwas erkennt, was ich eigentlich nicht will.

Wenn du wirklich versuchen möchtest, einen CSS-Parser/-Highlighter zu schreiben, wünsche ich schon jetzt viel Spaß und gute Nerven. :)

Immerhin ist die Erkenntnis, dass das alles nicht ganz so leicht ist, auch eine Erkenntnis ;-)

Ich habe auch mal einen HTML-Highlighter aus dem Internet, der mit Regex arbeitet (böse, böse, ich weiß), getestet und der war auch sehr leicht aus dem Konzept zu bringen...

Der Nachteil an highlight_string ist, dass man die Rückgabe noch mal als HTML verarbeiten muss, wenn man aus den Inline-Styles saubere CSS-Klassennamen machen möchte (für Syntax-Highlighter-Themes). Das ist aber vermutlich immer noch besser, als sich einen eigenen PHP-Parser schreiben zu müssen.

Ließe sich cachen, ist aber trotzdem nicht sonderlich elegant.

Ein, zwei Sachen, die mir (oder eher meiner IDE) spontan an deinem Code aufgefallen sind:

Welche IDE benutzt du bzw. kannst du für Webentwicklung unter Linux empfehlen? Eclipse? Ich nutze seit Ewigkeiten gedit, weil ich bisher zu faul war, etwas anderes auszuprobieren...

  • $content=false; müsste $comment=false; heißen? Zumindest ist $content ungenutzt und $comment wird nicht initialisiert.

  • Ebenfalls nicht initialisiert werden $highlight_php und $attr_marker.

Werde ich beheben. Danke für deine Hinweise.

  • Hier eine Eingabe, die einige Probleme demonstriert:

    $input = <<<'EOT'
    <?php echo 'foo ?> "\' bar\\'; /* ?> */ // ?>
    EOT;
    

Mh, ich müsste also prüfen, ob das ?> wirklich das letzte vor dem nächsten <?php ist und dass dieses im HTML- und nicht im PHP-Kontext steht.

Das ist sicherlich ein denkbarer Ansatz[^pdflatex], aber eine LaTeX-Installation auf dem Server ist für den Fokus meines Tools fünf Nummern zu krass. (Das ist ehrlich gesagt wohl auch für 99 % der Anwender/Webspaces zu krass.) Besser wäre eine LaTeX-Installation auf dem Rechner, auf dem die fertige (und bis auf das Einbinden von clientseitigem JS-Code statische) Seite generiert wird. Man würde dann eben die fertigen SVG-Grafiken während des Build-Vorgangs erzeugen und am Ende mit hochladen. Es bleibt natürlich eine dicke Abhängigkeit, die man erst mal aufsetzen muss, und, ja, es steht dem Ansatz entgegen, eine reine PHP-Lösung für die Grundfunktionalität zu haben.

Mein aktueller Ansatz geht in die Richtung, die Funktionalität in Plugins auszulagern und damit eine Wahlmöglichkeit zu schaffen: Keine Formeln, (Xe-)LaTeX auf dem Server, MathJax (CDN) und MathJax (selbst gehostet) bzw. Kein Highlighting, Selbstgestrickte schlechte Lösung und eine JavaScript-Lösung.

Gruß
Julius

P.S.: Kannst du mir vielleicht ein funktionierendes GeSHi-Beispiel geben, deren Doku ist ziemlich wirr und enthält soetwas nicht?

P.P.S.: Ich habe mal den Baum abonniert, ich hoffe, dass ich jetzt auch Benachrichtungen bekomme, wenn ich eine Antwort erhalte...

0 52

wozu blog software ?

Pinie
  • blog
  1. 0
    Matthias Scharwies
    • blog
    • webdesign
  2. 0
    Auge
    • grafik
  3. 0
    pl
  4. 2
    mermshaus
    1. 1
      Pinie
      1. 1
        Auge
        1. 1
          mermshaus
          • blog
          • software
          1. 0

            Anmerkung für mermshaus

            Auge
            • zur info
            1. 0
              mermshaus
              1. 0
                Christian Kruse
              2. 0
                Auge
                1. 0
                  mermshaus
                  1. 0
                    Auge
                    1. 0
                      Christian Kruse
                      1. 0
                        Auge
                        • zu diesem forum
                        • zur info
                        1. 0
                          Christian Kruse
                      2. 0
                        mermshaus
    2. 1
      Pinie
  5. 0
    marctrix
  6. 0
    Pinie
    1. 0
      mermshaus
      1. 0
        Pinie
        1. 0
          mermshaus
          1. 0
            Julius
            • blog
            • markdown
            • php
            1. 0
              mermshaus
              1. 0
                Julius
                • html
                • markdown
                • php
      2. 0
        Pinie
        1. 0
          mermshaus
        2. 0
          mermshaus
          1. 0
            Pinie
            1. 1
              mermshaus
              1. 2
                Pinie
                1. 0
                  mermshaus
                2. 0
                  mermshaus
                  1. 1
                    Pinie
                    1. 0
                      mermshaus
            2. 0
              mermshaus
              1. 0
                Pinie
                1. 0
                  Auge
                  • zu diesem forum
              2. 0
                Julius
                • blog
                • javascript
                • php
                1. 0
                  mermshaus
                  1. 0
                    mermshaus
                    1. 0
                      Julius
                      • javascript
                      • php
                      • unicode
                      1. 0
                        mermshaus
                        1. 0
                          Julius
                          1. 0
                            mermshaus
                            • php
                            • unicode
                  2. 0
                    Julius
                    1. 0
                      mermshaus
                      • php
                      1. 0
                        Julius
                2. 0
                  mermshaus
                  1. 0
                    Julius