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.
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);
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 $ )
<?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('/<\?php/', '<span style="color: purple;"><?php</span>', $code);
// Tragen Sie Grammatik hervor
return nl2br(preg_replace_callback_array($patterns, $code));
}
// Ausgang hervorgehoben HTML Code
echo highlight_php_code($code);
?>
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>
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.
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.