Подтвердить что ты не робот

Как анализировать Markdown в PHP?

Во-первых, я знаю, что уже существует парсер Markdown для PHP. Я также рассмотрел этот вопрос, но он не отвечает на мой вопрос.

Очевидно, даже если заголовок упоминает PHP, если он агностик языка, потому что я хотел бы знать, какой шаг я должен выполнить, чтобы сделать это.

Я читал о PEG, но я должен признать, что я действительно не понял пример, предоставленный с помощью парсера PHP.

Я также читал о CFG.

Я нашел Zend_Markup_Parser_Textile, который, похоже, создает так называемое "дерево токенов" (что об этом?), но в настоящее время непригодный для использования. (Btw, Текстиль не Markdown)

Итак, конкретно, как бы вы пошли на это?

Очевидно, что я использую Regex, но, боюсь.

Поскольку Markdown поддерживает несколько синтаксисов для одного и того же элемента (Setext и atx).

Не могли бы вы дать некоторую отправную точку?

4b9b3361

Ответ 1

Вы должны посмотреть Parsedown.

Он анализирует текст Markdown так, как это делают люди. Во-первых, он делит тексты на строки. Затем он смотрит, как эти линии начинаются и соотносятся друг с другом. Наконец, он ищет специальные символы для идентификации встроенных элементов.

Ответ 2

Существует PHP Markdown Extra, который, кажется, популярен, вы можете начать с изучения его источника.

Ответ 3

Кроме того, существует объектно-ориентированная реализация Markdown, которая выполняется быстрее: markdown-oo-php

Ответ 4

Ciconia - новый маркерный анализ для PHP - это хороший, который я нашел.

Вам нужно всего лишь 3 вещи:

1.Установите Ciconia и проанализируйте файл в соответствии с .
2. Добавьте соответствующую тему css, чтобы сделать ее приятной, например стиль удержания github или .
3. Добавьте подсветку синтаксиса javascript, например google Javascript code prettifier.

Тогда все будет выглядеть довольно хорошо.

Если вам нужен полный пример, вот моя рабочая демонстрация для уценки стиля github:

<?php
header("Content-Type: text/html;charset=utf-8");
require 'vendor/autoload.php';
use Ciconia\Ciconia;
use Ciconia\Extension\Gfm;

$ciconia = new Ciconia();
$ciconia->addExtension(new Gfm\FencedCodeBlockExtension());
$ciconia->addExtension(new Gfm\TaskListExtension());
$ciconia->addExtension(new Gfm\InlineStyleExtension());
$ciconia->addExtension(new Gfm\WhiteSpaceExtension());
$ciconia->addExtension(new Gfm\TableExtension());
$ciconia->addExtension(new Gfm\UrlAutoLinkExtension());
$contents = file_get_contents('Readme.md');
$html = $ciconia->render($contents);
?>
<!DOCTYPE html>
<html>
    <head>
        <title>Excel to Lua table - Readme</title>
        <script src="https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js"></script>
        <link rel="stylesheet" href="./github-markdown.css">
        <style>
            .markdown-body {
                box-sizing: border-box;
                min-width: 200px;
                max-width: 980px;
                margin: 0 auto;
                padding: 45px;
            }
        </style>
    </head>
    <body>
        <article class="markdown-body">
        <?php
            # Put HTML content in the document
            echo $html;
        ?>
        </article>
    </body>
</html>