Start · Sprachen · PHP · Referenz · highlight_file

highlight_file

Funktion

Gibt den Inhalt einer PHP-Datei mit Syntax-Hervorhebung aus oder gibt ihn als HTML-String zurück.

seit PHP 4.0.0 Kategorie: misc

Signatur

highlight_file(string $filename, bool $return = false): string|true|false

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

Typ
string|true|false
Beschreibung
Gibt 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');
<!-- Browserausgabe: HTML mit farbig hervorgehobenem PHP-Code aus 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>';
}
<div class="code-viewer"><code><span style="color: #000000">...</span></code></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.