Aktueller Standort: Startseite> Neueste Artikel> Wie Verwenden Sie die Funktion PREG_REPLACE_CALLBACK_Array, um die Syntax -Hervorhebung des PHP -Code zu implementieren?

Wie Verwenden Sie die Funktion PREG_REPLACE_CALLBACK_Array, um die Syntax -Hervorhebung des PHP -Code zu implementieren?

M66 2025-06-04

Die Syntax -Hervorhebung ist eine wichtige Funktion beim Erstellen von Entwicklungstools, Blog -Engines oder Code -Sharing -Plattformen. Obwohl PHP selbst keine fertigen hervorgehobenen Bibliotheken wie das Front-End (wie Prism.js oder Highlight.js) verfügt, können wir reine PHP verwenden, um grundlegende Syntax-Hervorhebungen zu implementieren. Die Funktion PRG_REPLACE_CALLBACK_Array () bietet eine prägnante und elegante Möglichkeit, verschiedene Codeelemente anzupassen und sie in verschiedene Farben oder Beschriftungen einzuwickeln.

In diesem Artikel wird erläutert, wie Sie preg_replace_callback_array () verwenden, um einen einfachen PHP -Syntax Highlighter zu implementieren.

Was ist preg_replace_callback_array

preg_replace_callback_array () ist eine in PHP 7.0 eingeführte Funktion. Sie können verschiedene Rückruffunktionen für mehrere reguläre Ausdrücke gleichzeitig angeben. Dies erfordert einen Aufruf für jede Regel, einmal im Vergleich zu der alten Methode preg_replace_callback () , die eine klarere Struktur und eine höhere Effizienz aufweist.

Die grundlegende Syntax ist wie folgt:

 preg_replace_callback_array(array $patterns_and_callbacks, string $subject);

Der Effekt, den wir erreichen wollen

Wir möchten die folgenden Elemente hervorheben:

  • PHP -Schlüsselwörter (wie Funktion , Echo , if usw.)

  • String (Inhalt von ungeraden und doppelten Zitaten)

  • Kommentare ( // Start oder / * ... * / )

  • Variable (Kennung beginnend mit $ )

Beispielcode

 <?php

$code = <<<'PHP'
<?php
// Dies ist ein Kommentar
function sayHello($name) {
    echo "Hello, $name!";
}
PHP;

function highlight_php_code(string $code): string {
    $keywords = ['function', 'echo', 'if', 'else', 'return'];
    $keywordPattern = '/\b(' . implode('|', $keywords) . ')\b/';
    $stringPattern = '/([\'"])(.*?)(\1)/s';
    $commentPattern = '/(\/\/.*?$|\/\*.*?\*\/)/ms';
    $variablePattern = '/(\$\w+)/';

    $patterns = [
        $keywordPattern => function ($matches) {
            return '<span style="color: blue; font-weight: bold;">' . $matches[0] . '</span>';
        },
        $stringPattern => function ($matches) {
            return '<span style="color: green;">' . htmlspecialchars($matches[0]) . '</span>';
        },
        $commentPattern => function ($matches) {
            return '<span style="color: gray; font-style: italic;">' . htmlspecialchars($matches[0]) . '</span>';
        },
        $variablePattern => function ($matches) {
            return '<span style="color: darkorange;">' . $matches[0] . '</span>';
        },
    ];

    // Sicheres Handling HTML
    $code = htmlspecialchars($code);

    // Verarbeiten Sie es zuerst PHP Etikett
    $code = preg_replace('/&lt;\?php/', '<span style="color: purple;">&lt;?php</span>', $code);

    // Tragen Sie Grammatik hervor
    return nl2br(preg_replace_callback_array($patterns, $code));
}

// Ausgang hervorgehoben HTML Code
echo highlight_php_code($code);

?>

Ausgangseffekt

Nachdem dieser Code ausgeführt wurde, wird ein Zeichenfolge im HTML -Format ausgegeben, der den gestalteten PHP -Code enthält:

  • Schlüsselwörter werden blau und dick

  • Die Schnur wird grün

  • Der Kommentar ist grau kursiv

  • Die Variable ist dunkelorange

Sie können es direkt in Ihre Seite einbetten, z. B.:

 <pre style="background-color: #f9f9f9; padding: 10px;">
<?php echo highlight_php_code($code); ?>
</pre>

Beispiele für Anwendungsszenarien

Wenn Sie beispielsweise eine Code -Sharing -Plattform entwickeln:

 https://m66.net/snippet/123

Sie können diese Funktion verwenden, um die PHP -Code -Snippets des Benutzers auf der Seite "Ansicht -Code -Details anzeigen" hervorzuheben, um die Lesbarkeit zu verbessern.

Zusammenfassen

Verwenden Sie preg_replace_callback_array () , um die PHP -Syntax -Hervorhebung zu erreichen, was nicht nur in der Logik klar ist, sondern auch eine gute Leistung aufweist und für leichte Code -Anzeigeanforderungen geeignet ist. Wenn Sie fortschrittlichere Funktionen für Syntaxanalyse benötigen, können Sie die Tokenizer-Erweiterung von PHP oder die Verwendung von Bibliotheken von Drittanbietern (z. B. Highlight.php) kombinieren.