Signatur
Beschreibung
highlight_file() liest eine PHP-Quelldatei ein und gibt deren Inhalt mit farblicher Syntax-Hervorhebung aus. Die Hervorhebung erfolgt durch das in PHP eingebaute Tokenizer-System und liefert HTML-Code mit <span>-Tags und inline Farb-Stilen, die über die highlight.colors.*-Direktiven in der php.ini konfiguriert werden können.
Wenn der Parameter $return auf true gesetzt wird, gibt die Funktion den generierten HTML-String zurück, anstatt ihn direkt auszugeben. Das ist nützlich, wenn der Code vor der Ausgabe noch weiterverarbeitet, gespeichert oder in ein Template eingebettet werden soll.
Typische Einsatzgebiete sind Dokumentationssysteme, Code-Viewer, Online-IDEs oder Lehrplattformen, bei denen PHP-Quelldateien lesbar und optisch aufbereitet präsentiert werden sollen. Für die Hervorhebung eines bereits im Speicher befindlichen Strings steht die verwandte Funktion highlight_string() zur Verfügung.
Achtung: Die Funktion öffnet die Datei direkt auf dem Dateisystem. Es muss sichergestellt werden, dass der Pfad nicht aus Benutzereingaben stammt, da dies zur unbeabsichtigten Offenlegung sensibler Dateien führen kann.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $filename Pflicht | string | Pfad zur PHP-Quelldatei, die hervorgehoben werden soll. Kann ein relativer oder absoluter Pfad sein. | |
| $return | bool | false | Wenn true, wird der erzeugte HTML-Code als String zurückgegeben statt direkt ausgegeben. |
Rückgabewert
true zurück, wenn $return auf false gesetzt ist und die Ausgabe erfolgreich war. Gibt einen string mit dem HTML-Code zurück, wenn $return auf true gesetzt ist. Bei einem Fehler (z. B. Datei nicht gefunden oder nicht lesbar) wird false zurückgegeben.Beispiele
Direkte Ausgabe einer PHP-Datei mit Syntax-Hervorhebung
<?php
// Gibt den Inhalt der Datei 'example.php' mit Syntax-Hervorhebung direkt aus
highlight_file('example.php');
HTML-String abrufen und in ein Template einbetten
<?php
// HTML als String zurückgeben
$highlightedCode = highlight_file('example.php', true);
if ($highlightedCode === false) {
echo '<p>Datei konnte nicht gelesen werden.</p>';
} else {
echo '<div class="code-viewer">';
echo $highlightedCode;
echo '</div>';
}
Sicherer Code-Viewer mit Whitelist-Prüfung
<?php
// Erlaubte Dateien explizit definieren (nie Benutzereingaben direkt verwenden!)
$allowedFiles = [
'examples/hello_world.php',
'examples/loops.php',
];
$requested = $_GET['file'] ?? '';
if (in_array($requested, $allowedFiles, true)) {
highlight_file($requested);
} else {
http_response_code(403);
echo '<p>Zugriff verweigert.</p>';
}
// Wichtig · Fallstricke
Sicherheitswarnung: Verwende highlight_file() niemals mit ungeprüften Benutzereingaben als Dateinamen. Ein Angreifer könnte damit beliebige Dateien vom Server auslesen (z. B. Konfigurationsdateien mit Passwörtern). Setze immer eine Whitelist erlaubter Dateipfade ein.
Die Farben der Hervorhebung können in der php.ini über Direktiven wie highlight.string, highlight.comment, highlight.keyword usw. angepasst werden. Alternativ kann ini_set() zur Laufzeit genutzt werden.
Der erzeugte HTML-Code ist nicht vollständig standardisiert und hat sich zwischen PHP-Versionen leicht geändert. Für produktive Anwendungen mit erweiterten Anforderungen (z. B. JavaScript-Highlighting, Zeilennummern) empfiehlt sich eine dedizierte Bibliothek wie highlight.php oder Prism.js.