Ich   Entwicklung   Lösungen Apache PHP mySQL  
 

QFormat v0.9.8.7 beta © Jens Becker

Neu! 07.05.2006: Die replace_entity.txt wurde so erweitert, dass auch für neuere PHP-Versionen die Ausgabe stimmt (diese benutzen statt font-Elementen span-Elemente).

Möchten Sie das Skript einfach benutzen, ohne sich weiter dafür zu interessieren, wie es funktioniert? Skript aufrufen

Was ist QFormat?

Dieses Programm soll all denen helfen, die (PHP-)Quelltexte mit farbig hervorgehobener Syntax in HTML-Seiten schreiben möchten. Sie können Ihren Quelltext in ein Formular eingeben, woraufhin der formatierte Text als HTML ausgegeben wird. Diesen können Sie dann kopieren und in eine HTML-Seite einfügen. Beispiele dafür sehen Sie in meinen Artikeln Styleswitching und Weiterleitung, und weiter unten.

Warum QFormat?

Gegenüber der PHP-Funktion highlight_string() gibt es einige Vorteile:

  • Der erzeugte Output ist XHTML-konform (natürlich nur, wenn Ihr Input XHTML-konform ist).
  • Alle wichtigen HTML-Entities werden umgewandelt, die Liste der umzuwandelnden Zeichenketten ist leicht erweiter- und konfigurierbar.
  • Sie müssen kein PHP können (obwohl das ja eigentlich Voraussetzung ist, um Quelltext zu schreiben).
  • Sie müssen die Farben nicht (wie bei der PHP-Funktion) in der php.ini anpassen.

Wie funktioniert es?

Der per POST übergebene Quellcode wird mit der PHP-Funktion highlight_string() umgewandelt. Falls magic quotes aktiviert sind, werden vorher die von PHP hinzugefügten Escape-Zeichen wieder entfernt.

$ergebnis = $_POST["quellcode"];

if(get_magic_quotes_gpc()) {
    $ergebnis = stripslashes($ergebnis);
}

ob_start();
highlight_string($ergebnis);
$ergebnis = ob_get_contents();
ob_end_clean();

Dann wird die Textdatei eingelesen, in der vorgegeben wird, welche Zeichenketten ersetzt werden müssen. Die Textdatei sieht wie folgt aus: replace_entity.txt

Die ersten Zeilen sorgen dafür, dass die erzeugten Zeilenumbrüche entfernt werden, da innerhalb einer pre-Elementes ASCII-Zeilenumbrüche interpretiert werden. Die folgenden Zeilen sorgen für eine Umwandlung der font-Elemente, bei denen die Reihenfolge wichtig ist und nicht verändert werden darf! Sind weitere Ersetzungen gewünscht, sollten sie am Ende der Datei angefügt werden, so wie das hier für einige deutsche Entities der Fall ist.

Die Zeichenketten werden eingelesen und in einem Array namens $replace gespeichert:


$replace_entity_file = fopen("replace_entity.txt","r");

// ZU ERSETZENDE ZEICHEN IN $replace SPEICHERN
$i = 0;
while($line = fgets($replace_entity_file, 1024)) {
    $temp = explode("|",$line);
    $replace[$i]["old"] = trim($temp[0]);
    $replace[$i]["new"] = trim($temp[1]);
    $i++;
    unset($temp);
}
unset($line);
unset($i);
echo ".";
flush();

// DATEI SCHLIESSEN
fclose($replace_entity_file);

Schließlich wird die Erstzung durchgeführt:


for($i = 0; $i < count($replace); $i++) {
    $ergebnis = str_replace($replace[$i]["old"], $replace[$i]["new"], $ergebnis);
}
$ergebnis = str_replace("&amp;nbsp;"," ",$ergebnis);

Das Ergebnis ist eben ein korrigiertes Ergebnis der highlight_string()-Funktion.

Was muss ich bedenken?

Die farbigen Fonts werden mit <span class="name">Inhalt</span> erreicht. Es werden die folgenden Klassen benutzt, die Sie selber mit CSS formatieren können:

  • kommentar -- alle mit // eingeleiteten oder in /* */ geschriebene Kommentare
  • funktion -- alle Sprachkonstrukte und Funktionen (ausser diejenigen, die als Wert vorkommen)
  • wert -- Variable, Zahlen und Funktionen, die als Wert anderer Funktionen vorkommen
  • zeichenkette -- alle in "" eingefassten Zeichenketten
  • html -- alles, was nicht PHP ist

Als Beispiel können Sie sich ja meine in allen Beispielen benutzte CSS-Datei ansehen. Sie dürfen sie natürlich auch gerne herunterladen und modifizieren.

Wie benutze ich das Formular?

Bitte den kompletten HTML-/PHP-Quellcode in das Feld eintragen. Farbig gekennzeichnet wird nur PHP-Quelltext, und dies auch nur, wenn er von <?php eingeleitet wird!

Der PHP-Quelltext sollte korrekt sein! QFormat macht unter anderem von der Funktion highlight_string() Gebrauch; diese gibt teilweise Fehlermeldungen aus, wenn auf falschen Code gestossen wird.

Tabulatoren können Sie leider nicht in das Textfeld einfügen, da der Browser dann normalerweise zum nächsten Eingabefeld springt. Es lassen sich aber sehrwohl Tabulatoren kopieren!

Ist QFormat perfekt?

Nein. Es kann beispielsweise vorkommen, dass ein span beendet wird, nur um sofort wieder geöffnet zu werden. Die Ausgabe sollte allerdings fehlerfrei sein. Falls Sie Fehler finden oder Verbesserungsvorschläge haben, schreiben Sie mir bitte an jb@intermitto.net oder nutzen Sie mein Kontaktformular.

Skript ausprobieren / Quelltext des Skriptes ansehen

URL: www.intermitto.net/loesungen/skripte/qformat/
© 2004-05 Jens Becker - intermitto.net v5.1
Letzte Änderung: 23.08.2005

Home - Kontaktformular - Downloads - Suche und Sitemap - Impressum
Entwicklung - Problemlösungen - Tutorials: Apache PHP mySQL

user  pass