1

Highlight file: примеры (PHP)

Использование 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

Функция show_source() является псевдонимом highlight_file() и работает идентично. Выбор между ними зависит только от стиля написания кода.

php_strip_whitespace

Функция 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 файла

Функция обработает файл, но подсветка может работать некорректно для синтаксиса других языков.

<?php
highlight_file('style.css'); // Выведет содержимое, но с PHP-подсветкой
?>
Проблемы с правами доступа

При отсутствии прав на чтение файла функция завершится ошибкой.

Изменения в новых версиях PHP

В PHP 8.0 были обновлены цвета подсветки по умолчанию для лучшей читаемости. Сама сигнатура функции highlight_file() осталась неизменной на протяжении многих версий, что обеспечивает обратную совместимость. Рекомендуется использовать современные константы для настройки цветов, так как старые методы могут быть устаревшими.

Расширенные примеры

Комбинирование с выводом буфера

Захват вывода функции для дальнейшей обработки.

Пример php
<?php
ob_start();
highlight_file('index.php');
$output = ob_get_clean();
$output = str_replace('<br />', '<br>', $output); // Пример замены тегов
echo $output;
?>
Подсветка кода с номерами строк

Добавление номеров строк к выводу.

Пример php
<?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
<?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.

PHP highlight_file function comments

En
Highlight file Syntax highlighting of a file