Преобразование Twig HTML в Markdown: методы и примеры

В веб-разработке Twig – это популярный шаблонизатор, используемый в сочетании с PHP-фреймворками, такими как Symfony. С другой стороны, Markdown — это легкий язык разметки, используемый для создания форматированного текста. Преобразование HTML-шаблонов Twig в Markdown может быть полезно в различных сценариях, таких как перенос контента в генератор статических сайтов или упрощение процесса редактирования. В этой статье мы рассмотрим несколько методов преобразования HTML Twig в Markdown, а также приведем примеры кода.

Метод 1: использование расширения Twig
Простой подход — создать собственное расширение Twig, которое предоставляет фильтр для преобразования HTML в Markdown. Вот пример реализации этого метода:

{# Twig template #}
{{ htmlContent|markdown }}
// Twig extension
use League\HTMLToMarkdown\HtmlConverter;
class MarkdownExtension extends \Twig\Extension\AbstractExtension implements \Twig\Extension\GlobalsInterface
{
    public function getFilters()
    {
        return [
            new \Twig\TwigFilter('markdown', [$this, 'convertToMarkdown'], ['is_safe' => ['html']]),
        ];
    }
    public function convertToMarkdown($htmlContent)
    {
        $converter = new HtmlConverter();
        return $converter->convert($htmlContent);
    }
}

Метод 2: использование сторонней библиотеки
В качестве альтернативы вы можете использовать существующие библиотеки, которые обеспечивают функцию преобразования HTML в Markdown. Одной из популярных библиотек является «html-to-markdown» от Дома Кристи. Вот пример того, как его использовать:

$ composer require domchristie/html-to-markdown
use League\HTMLToMarkdown\Converter\ConverterInterface;
use League\HTMLToMarkdown\Environment;
require_once 'vendor/autoload.php';
$environment = new Environment(['strip_tags' => true]);
$converter = new ConverterInterface($environment);
$htmlContent = '<h1>Heading 1</h1><p>Paragraph</p><ul><li>Item 1</li><li>Item 2</li></ul>';
$markdownContent = $converter->convert($htmlContent);
echo $markdownContent;

Метод 3: использование Pandoc
Pandoc — это универсальный инструмент преобразования документов, поддерживающий преобразование HTML в Markdown. Вы можете использовать его как инструмент командной строки или интегрировать в свое приложение. Вот пример использования командной строки:

$ pandoc -f html -t markdown -o output.md input.html

Преобразование HTML-шаблонов Twig в Markdown может быть достигнуто с помощью различных методов, будь то с помощью пользовательских расширений Twig, сторонних библиотек или внешних инструментов, таких как Pandoc. Выберите метод, который лучше всего соответствует требованиям и предпочтениям вашего проекта. Преобразовав Twig HTML в Markdown, вы можете упростить управление контентом и обеспечить совместимость с генераторами статических сайтов или другими рабочими процессами на основе Markdown.