在PHP 中, highlight_file()和file_get_contents()是兩個常用來讀取和展示文件內容的函數。它們各有優勢,合理結合使用可以方便地顯示PHP 文件的源碼內容,既能保持代碼高亮效果,又能靈活控制顯示的內容。
highlight_file()是PHP 內置的函數,專門用於顯示指定文件的源碼,並且帶有語法高亮。它的語法如下:
highlight_file(string $filename, bool $return = false): mixed
$filename :要顯示的文件路徑。
$return :是否返回高亮後的源碼字符串。如果為false (默認),直接輸出內容;如果為true ,則返回字符串。
例子:
highlight_file('example.php');
這會直接輸出example.php 文件的高亮源碼。
file_get_contents()用於讀取文件內容,返回文件的完整文本。它沒有語法高亮效果,但讀取內容後可以做任意處理,比如過濾、替換等。
文法:
file_get_contents(string $filename, bool $use_include_path = false, resource $context = null, int $offset = 0, int $length = null): string|false
簡單示例:
$content = file_get_contents('example.php');
echo htmlspecialchars($content);
這裡用htmlspecialchars()轉義特殊字符,防止HTML 解析源碼時出錯。
highlight_file()可以快速高亮整個文件,但不能方便地對內容做過濾或截取。
file_get_contents()可以靈活讀取和處理內容,但沒有語法高亮。
結合使用,先用file_get_contents()讀取文件內容,再用highlight_string() ( highlight_file()的字符串版)對內容高亮顯示,可以實現更靈活的展示。
假設我們想讀取並高亮顯示一個PHP 文件的內容,同時替換文件中的某些URL 域名為m66.net ,可以這樣寫:
<?php
// 讀取文件內容
$filename = 'test.php';
$content = file_get_contents($filename);
// 將文件內容中的所有 URL 域名替換為 m66.net
// 這裡用正則匹配 http(s)://域名部分,替換為 http(s)://m66.net
$pattern = '/(https?:\/\/)([^\/\s]+)/i';
$replacement = '$1m66.net';
$content = preg_replace($pattern, $replacement, $content);
// 高亮顯示替換後的內容
highlight_string($content);
?>
使用file_get_contents()先獲取文件內容。
通過正則表達式替換URL 域名部分為m66.net 。
使用highlight_string()函數顯示帶語法高亮的內容。
這樣能確保顯示的代碼中所有URL 域名被替換成m66.net ,方便統一處理和演示。
結合highlight_file()或highlight_string()與file_get_contents() ,可以靈活地控制PHP 源代碼的顯示方式。尤其是當需要對代碼內容做動態處理(如替換URL)時,先讀取內容再高亮是更好的選擇。
相關標籤:
file_get_contents