W3docs

highlight_string()

In diesem Artikel befassen wir uns mit der PHP-Funktion highlight_string(), ihrer Signatur, ihrem Rückgabewert und praktischen Anwendungsbeispielen.

In diesem Artikel befassen wir uns mit der PHP-Funktion highlight_string(). Wir erklären, was sie tut, ihre Signatur und ihren Rückgabewert, wie man die Ausgabe als string erfasst, häufige Fallstricke und wann eine andere Vorgehensweise sinnvoller ist.

Einführung in die Funktion highlight_string()

highlight_string() ist eine eingebaute PHP-Funktion, die eine HTML-hervorgehobene Version eines Strings mit PHP-Quellcode zurückgibt oder ausgibt. Sie ist nützlich, wenn Sie lesbare, farblich markierte Code-Beispiele auf einer Webseite anzeigen möchten — zum Beispiel in Dokumentationen, Blogbeiträgen oder Tutorial-Seiten — ohne einen eigenen Tokenizer schreiben zu müssen.

Es ist wichtig zu verstehen, dass highlight_string() ausschließlich PHP-Code hervorhebt und der Code den öffnenden <?php-Tag (oder einen Kurztag) enthalten muss, damit die Hervorhebung greift. Einfacher Text ohne PHP-Tags wird größtenteils als einzelnes Token behandelt, sodass die erwarteten Farben nicht erscheinen.

Signatur

highlight_string(string $string, bool $return = false): string|bool
  • $string — der hervorzuhebende PHP-Code.
  • $return — wenn true, wird der hervorgehobene HTML-Code als string zurückgegeben; wenn false (Standardwert), wird er direkt ausgegeben und die Funktion gibt true zurück.

Das erzeugte Markup verwendet Inline-style="color: …"-Attribute, die aus den highlight.*-ini-Einstellungen stammen (wie highlight.string und highlight.keyword).

Verwendung der Funktion highlight_string()

In der einfachsten Form rufen Sie die Funktion auf und übergeben den PHP-string, den Sie hervorheben möchten:

Wie verwendet man die Funktion highlight_string()?

<?php
$string = '<?php echo "Hello, World!"; ?>';
highlight_string($string);
?>

Dies gibt direkt im Browser HTML aus, das dem folgenden ähnelt:

<pre><code style="color: #000000"><span style="color: #0000BB">&lt;?php </span><span style="color: #007700">echo </span><span style="color: #DD0000">"Hello, World!"</span><span style="color: #007700">; </span><span style="color: #0000BB">?&gt;</span></code></pre>

Im Browser werden Keywords, Strings und Tags in verschiedenen Farben dargestellt. Beachten Sie, dass die Sonderzeichen < und > zu &lt; und &gt; escapet werden, sodass der hervorgehobene Code sicher als Text angezeigt wird, anstatt als HTML interpretiert zu werden.

Ausgabe als string erfassen statt ausgeben

Standardmäßig gibt highlight_string() den hervorgehobenen HTML-Code sofort aus. Übergeben Sie true als zweites Argument, wenn Sie das Ergebnis erfassen möchten — zum Beispiel um es zu cachen, durch ein Template zu verarbeiten oder in zusätzliches Markup einzubetten, bevor es an die Seite gesendet wird:

Beispiel für PHP highlight_string()

<?php
$string = '<?php echo "Hello, World!"; ?>';
$highlighted = highlight_string($string, true);
echo '<pre>' . $highlighted . '</pre>';
?>

Da die Funktion ihre Ausgabe bereits in einen <pre><code>-Block einbettet, müssen Sie in der Regel kein eigenes <pre> hinzufügen — das Wrapper-Beispiel oben dient nur zur Veranschaulichung, dass $highlighted ein gewöhnlicher string ist, den Sie mit beliebigen Inhalten verketten können.

Fallstricke und Einschränkungen

  • Der Code muss PHP-Tags enthalten. highlight_string('echo "hi";') (ohne <?php) wird als einfacher Text behandelt und ohne Formatierung ausgegeben. Betten Sie Ihren Codeausschnitt zuerst in <?php … ?> ein.
  • Die Eingabe wird nicht von Ihnen escapet — die Funktion erledigt das. highlight_string() kodiert den Code selbst in HTML, daher dürfen Sie ihn niemals vorher durch htmlspecialchars() verarbeiten, sonst erscheinen doppelte Entities wie &amp;lt;.
  • Keine Optionen für Zeilennummern oder CSS-Klassen. Die Farben sind Inline-style-Attribute, die aus den highlight.*-ini-Einstellungen stammen; es gibt keine eingebaute Möglichkeit, Zeilennummern oder benutzerdefinierte Klassen hinzuzufügen.
  • Die echte PHP-Tokenisierung wird verwendet. Syntaktisch fehlerhafter Code kann Warnungen erzeugen, da die Funktion die Eingabe genauso lexikalisch analysiert wie der PHP-Engine selbst.

Für fortgeschrittene Hervorhebung — benutzerdefinierte CSS-Klassen, Zeilennummern oder das Hervorheben anderer Sprachen als PHP — analysieren Sie den Code selbst mit token_get_all() und erstellen Sie eigenes Markup, oder verwenden Sie eine dedizierte Bibliothek.

Verwandte Funktionen

  • highlight_file() — derselbe Highlighter, liest den PHP-Code jedoch aus einer Datei statt aus einem string.
  • htmlspecialchars() — HTML-Sonderzeichen escapen, wenn Sie highlight_string() nicht verwenden.
  • htmlentities() — alle anwendbaren Zeichen in HTML-Entities umwandeln.
  • nl2br()<br>-Tags vor Zeilenumbrüchen einfügen, wenn einfacher Text angezeigt wird.

Fazit

Zusammenfassend lässt sich sagen, dass die Funktion highlight_string() ein eingebautes Werkzeug zur Erzeugung formatierter PHP-Strings mit Syntaxhervorhebung ist. Wenn Sie verstehen, wie die Funktion und ihr Rückgabeparameter funktionieren, können Sie diese Funktion nutzen, um lesbaren, hervorgehobenen Code in Ihren Webanwendungen anzuzeigen.

Übungen

Übung
Was ist die primäre Funktion von highlight_string() in PHP?
Was ist die primäre Funktion von highlight_string() in PHP?
Was this page helpful?