首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 關鍵字高亮:為指定詞彙加上 Span 標籤

     編輯:PHP 相關知識

PHP 關鍵字高亮:為指定詞彙加上 Span 標籤

在程式碼展示、搜尋結果或關鍵字標記場景中,需將特定詞彙包裹 <span class="keyword"> 以套用樣式。核心挑戰在於:僅比對完整單字(避免部份比中)、忽略註解/字串內部、保留原始大小寫。本文提供一個以正則替換為基礎的實用方案。

核心實作

<?php
function highlightKeywords(string $code, array $keywords, string $color = 'blue'): string {
    // 1. 建立完整單字邊界正則:\b 為單字邊界,支援 Unicode 需 /u 修飾符
    $patterns = [];
    $replacements = [];
    foreach ($keywords as $kw) {
        // 僅匹配非 // 註解後的完整單字 (簡易版,完整語法分析建議用 tokenizer)
        $pattern = '/\b' . preg_quote($kw, '/') . '\b/';
        $patterns[] = $pattern;
        $replacements[] = "<span style='color:{$color}'>$0</span>";
    }
    return preg_replace($patterns, $replacements, $code);
}

// 使用範例
$phpKeywords = ['if', 'else', 'foreach', 'function', 'return', 'class', 'public', 'private'];
$sourceCode = '<?php
function test($a) {
    if ($a > 0) { return true; } else { return false; }
}
?>';

echo highlightKeywords($sourceCode, $phpKeywords, '#d63384');
?>

進階考量

  • 效能:大量關鍵字時,建議合併為單一正則 /\b(if|else|foreach)\b/ 並使用 preg_replace_callback。
  • 語境感知:上方方案會誤標註字串或註解內的關鍵字。生產環境建議使用 token_get_all() 解析 PHP Token 僅對 T_STRING、T_ECHO 等 Token 高亮,或引入成熟庫如 GeSHi、highlight.php。
  • HTML 輸出:若原始碼已含 HTML 實體,需先解碼再處理,最後重新編碼。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved