Highlight string: примеры (PHP)
highlight_string(string $string, bool $return = false): string|boolФункция highlight_string выводит или возвращает синтаксически подсвеченную версию PHP кода, используя цвета, определенные во встроенном синтаксическом анализаторе PHP.
Функция применяется для отображения примеров кода в документации, учебных материалах, средствах отладки или в административных интерфейсах для визуального выделения синтаксических элементов.
bool|string highlight_string(string $code, bool $return = false)
$code - строка, содержащая PHP код, который необходимо подсветить. Код должен быть заключен в открывающие и закрывающие теги PHP ().
$return - необязательный булевый параметр. Если установлен в true, функция возвращает подсвеченный код как строку. По умолчанию false, что приводит к непосредственному выводу результата.
Непосредственный вывод подсвеченного кода в браузер.
<?
highlight_string('<? echo "Hello, World!"; ?>');
?><? echo "Hello, World!"; ?>Сохранение результата в переменную для дальнейшей обработки.
<?
$result = highlight_string('<? $a = 10 + 5; ?>', true);
echo $result;
?><? $a = 10 + 5; ?>highlight_file($filename, $return = false) - подсвечивает синтаксис содержимого файла. Полезна для отображения исходного кода целых файлов.
show_source($filename) - псевдоним для highlight_file().
Функции token_get_all() и phptoken - предоставляют низкоуровневый доступ к лексемам PHP кода, позволяя создавать собственную логику подсветки.
Использование highlight_string предпочтительнее для работы с небольшими фрагментами кода в виде строк. highlight_file лучше подходит для отображения содержимого существующих файлов.
Если строка не содержит корректных тегов <?, код не будет распознан и подсвечен как обычный текст.
<?
highlight_string('echo "No tags";'); // Не сработает ожидаемо
?>Функция попытается подсветить код даже с синтаксическими ошибками, но результат может быть нестандартным.
<?
highlight_string('<? echo "Unclosed string; ?>', true);
?>Короткие теги (<?) могут не работать, если директива short_open_tag отключена в настройках PHP.
В PHP 7.4 были обновлены цвета подсветки по умолчанию для лучшего соответствия современным стандартам доступности и дизайна.
В PHP 8.0 продолжились внутренние улучшения лексического анализатора, что могло незначительно повлиять на детали разбора сложных конструкций, но интерфейс функции остался неизменным.
Функция show_source(), являющаяся псевдонимом highlight_file(), не рекомендуется к использованию, но пока не объявлена устаревшей.
<?
$code = '<?
class Example {
public function test() {
return 42;
}
}
?>';
$html = highlight_string($code, true);
file_put_contents('highlighted_code.html', $html);
?><?
$userCode = $_POST['code_fragment'] ?? '';
if (!empty($userCode) && strpos($userCode, '<?') !== false) {
// Для безопасности можно ограничить длину
$safeCode = substr($userCode, 0, 5000);
echo highlight_string($safeCode, false);
} else {
echo 'Введите корректный PHP код';
}
?>
<?
$output = highlight_string('<? $var = [1, 2]; ?>', true);
$output = str_replace('', '', $output);
echo $output;
?><?
$raw = highlight_string('<? $x = 5; ?>', true);
// Удаляем первый и последний span с тегами PHP
$clean = preg_replace('/^<\?php<\/span>|\s*\?><\/span>$/i', '', $raw);
echo trim($clean);
?>$x = 5;
from pygments import highlight
from pygments.lexers import PhpLexer
from pygments.formatters import HtmlFormatter
code = '<? echo "Hi"; ?>'
highlighted = highlight(code, PhpLexer(), HtmlFormatter())
print(highlighted)<? echo "Hi"; ?>
Pygments - это внешняя библиотека, требующая установки, но поддерживающая подсветку для сотен языков.
// Использование Highlight.js
// <?php echo "Test"; ?>
// hljs.highlightAll();Библиотеки на стороне клиента не требуют обработки на сервере, но зависят от JavaScript в браузере.