Как выделить код на стороне сервера с помощью PHP в Laravel

Функция подсветки синтаксиса необходима для каждого блога по программированию или проекта, где есть какой-то код, которым можно поделиться с кем-то еще. Из-за простоты разработчики используют библиотеки JavaScript для выделения кода в браузере клиента без каких-либо проблем или стрессов. Но иногда вам может понадобиться решение для работы везде, где даже при отключенном JavaScript вы получите потрясающий эффект подсветки синтаксиса.

В этой статье мы покажем вам, как выделять код на стороне сервера без какого-либо инструмента командной строки, а просто с помощью простого PHP в вашем проекте Laravel.

Требования

Чтобы выделить код на стороне сервера с помощью чистого PHP (без использования фрагментов или других инструментов командной строки), мы рекомендуем вам использовать библиотеку Highlight.php. highlight.php — это подсветка кода на стороне сервера, написанная на PHP, которая в настоящее время поддерживает более 135 языков. Это порт highlight.js Иван Сагалаев, написанный Герт Бергман это полностью использует определения языка и стиля оригинального проекта JavaScript.

Важная заметка

По нашему мнению, эта библиотека очень недооценена, поэтому, пожалуйста, не забудьте показать свою поддержку разработчику В главной роли проекта на Github, Спасибо !

Чтобы установить эту библиотеку в свой проект Laravel, выполните следующую команду в своем терминале (когда-то находившемся в каталоге вашего проекта):

composer require scrivo/highlight.php

После установки вы сможете использовать класс Highlighter библиотеки в вашем проекте Laravel. Визит официальный репозиторий библиотеки в Github для дополнительной информации.

А. Из контроллера в поле зрения

Первый способ добиться этого — через простое представление контроллера процесса:

1. Подготовьте выделенную готовую разметку в вашем контроллере

Библиотека работает следующим образом: создайте экземпляр класса подсветки, используйте метод подсветки, чтобы создать разметку, готовую для выделения в представлении. Метод подсветки ожидает в качестве первого аргумента идентификатор языка программирования для выделения, а в качестве второго аргумента — код, который будет выделен.

В вашем контроллере вам нужно будет включить класс Highlighter в верхней части вашего контроллера и следовать ранее упомянутому процессу. Обратите внимание, что в следующем примере мы отправляем разметку готовности к выделению в виде блейда:

Заметка

EOF явно не требуется. Это просто пример строки, которая содержит некоторый код для выделения.

highlight($language, $code);
// Send the markup with styles to some blade view (default.blade.php) that you want
// In this case the parameter "code" contains our code in the view
return view("default", [
"code" => $markupHighlightedCodeObject
]);
}
}

Как видите, он отправляет параметр, а именно code на следующий вид ветки. Это значение будет использоваться в представлении Twig следующего шага.

2. Визуализация и разметка стиля в Blade View

Это представление будет отображать разметку в соответствии с рекомендациями Highlight.js (code тег с классом hljs внутри pre тег). Параметр кода, доступный в ветке благодаря нашему контроллеру, является объектом, который содержит 2 свойства, а именно язык и значение, которое содержит используемый язык для выделения кода на сервере и сгенерированного кода соответственно.

Важно видеть, что после рендеринга готовой выделенной разметки в представлении необходимо использовать сырье фильтр ветки. Необработанный фильтр помечает значение как «безопасное», что означает, что в среде с включенным автоматическим экранированием эта переменная не будет экранирована (сгенерированный HTML будет действительно HTML вместо сущностей HTML).

Заметка

Помните, что разметка, сгенерированная PHP, не содержит никаких стилей, только разметку, которая может быть выделена с помощью CSS в представлении, поэтому не забудьте включить (или создать) любую из основных тем Highligh.js в представлении Twig , Как показано в следующем примере, мы используем Тема CSS Atelier Heath Dark из CDN, чтобы проверить это:

{{--
Insert Highlight.js styles from CDN
or your own local css file
--}}
{{--
Render the pre element with the code tag inside and respective classes.
Note: don't forget to print the code generated by the library without
escaping its content. With blade you can print it easily using {!! wont_escaped !!}
--}}
language }}">{!! $code->value !!}

[/ NOEDIT]

В результате в представлении наш выделенный код будет выглядеть так:

Подсветка кода на стороне сервера Laravel PHP

Круто не так? и вам не нужен JavaScript, чтобы получить тот же результат для вашего кода. Помните, что поддерживается более 135 языков, поэтому взгляните на поддерживаемые языки по проекту здесь.

Ссылка на основную публикацию
Adblock
detector