Highlight file: примеры (PHP)
highlight_file(string $filename, bool $return = false): string|boolФункция highlight_file в PHP
Функция highlight_file() предназначена для вывода содержимого PHP-файла с подсветкой синтаксиса. Цвета выделения определяются настройками в php.ini или могут быть изменены встроенными константами. Эта функция часто используется в инструментах для отладки, в простых системах просмотра кода или в учебных материалах.
highlight_file(string $filename, bool $return = false): string|bool
- $filename (строка, обязательный): Путь к файлу PHP, который необходимо вывести с подсветкой.
- $return (логический, необязательный, по умолчанию false): Если установлено в true, функция вернет подсвеченный код как строку, а не выведет его напрямую. При false происходит прямой вывод.
Функция возвращает строку с подсвеченным кодом, если $return = true, иначе true в случае успеха или false при ошибке.
Примеры использования highlight_file
Простой вывод содержимого файла в браузер.
<?php
highlight_file('script.php');
?>Использование параметра $return.
<?php
$highlightedCode = highlight_file('script.php', true);
echo '<div class="code">' . $highlightedCode . '</div>';
?>Изменение цветовой схемы перед выводом.
<?php
ini_set('highlight.comment', '#008000');
ini_set('highlight.default', '#000000');
ini_set('highlight.html', '#808080');
ini_set('highlight.keyword', '#0000BB');
ini_set('highlight.string', '#DD0000');
highlight_file('script.php');
?>Похожие функции в PHP
Функция highlight_string() подсвечивает строку с PHP-кодом, а не содержимое файла. Полезна для отображения фрагментов кода из переменных или баз данных.
Функция show_source() является псевдонимом highlight_file() и работает идентично. Выбор между ними зависит только от стиля написания кода.
Функция php_strip_whitespace() возвращает исходный код файла с удаленными комментариями и лишними пробелами. Она используется для анализа объема чистого кода, а не для его визуализации.
Типичные ошибки
Если файл не существует, функция вернет false и вызовет предупреждение.
<?php
$result = highlight_file('missing_file.php'); // Возвращает false
?>Warning: highlight_file(missing_file.php): Failed to open stream: No such file or directory in ...
Функция обработает файл, но подсветка может работать некорректно для синтаксиса других языков.
<?php
highlight_file('style.css'); // Выведет содержимое, но с PHP-подсветкой
?>При отсутствии прав на чтение файла функция завершится ошибкой.
Изменения в новых версиях PHP
В PHP 8.0 были обновлены цвета подсветки по умолчанию для лучшей читаемости. Сама сигнатура функции highlight_file() осталась неизменной на протяжении многих версий, что обеспечивает обратную совместимость. Рекомендуется использовать современные константы для настройки цветов, так как старые методы могут быть устаревшими.
Расширенные примеры
Захват вывода функции для дальнейшей обработки.
<?php
ob_start();
highlight_file('index.php');
$output = ob_get_clean();
$output = str_replace('<br />', '<br>', $output); // Пример замены тегов
echo $output;
?>Добавление номеров строк к выводу.
<?php
$code = highlight_file('script.php', true);
$lines = explode('<br />', $code);
echo '<div style="font-family: monospace;">';
foreach ($lines as $i => $line) {
$num = $i + 1;
echo "<span style=\"color: #999;\">$num</span> $line<br>";
}
echo '</div>';
?>Безопасный вывод файлов только из определенной директории.
<?php
$allowedDir = '/var/www/code/';
$file = isset($_GET['file']) ? $_GET['file'] : 'index.php';
$path = realpath($allowedDir . $file);
if ($path && strpos($path, $allowedDir) === 0 && is_file($path)) {
highlight_file($path);
} else {
echo 'Доступ запрещен.';
}
?>Аналоги в других языках
Highlight file в Python
В Python используется библиотека Pygments.
from pygments import highlight
from pygments.lexers import PhpLexer
from pygments.formatters import HtmlFormatter
code = open('script.php').read()
highlighted = highlight(code, PhpLexer(), HtmlFormatter())
print(highlighted)Highlight file в Javascript
Библиотека highlight.js часто применяется на стороне клиента.
<pre><code class="language-php">
<?php echo "Hello World"; ?>
</code></pre>
<script src="highlight.min.js"></script>
<script>hljs.highlightAll();</script>Highlight file в MySQL
В MySQL нет прямой функции подсветки синтаксиса, но она доступна в графических клиентах и инструментах вроде MySQL Workbench.