Как анализировать Markdown в PHP?
Во-первых, я знаю, что уже существует парсер Markdown для PHP.
Я также рассмотрел этот вопрос, но он не отвечает на мой вопрос.
Очевидно, даже если заголовок упоминает PHP, если он агностик языка, потому что я хотел бы знать, какой шаг я должен выполнить, чтобы сделать это.
Я читал о PEG, но я должен признать, что я действительно не понял пример, предоставленный с помощью парсера PHP.
Я также читал о CFG.
Я нашел Zend_Markup_Parser_Textile, который, похоже, создает так называемое "дерево токенов" (что об этом?), но в настоящее время непригодный для использования. (Btw, Текстиль не Markdown)
Итак, конкретно, как бы вы пошли на это?
Очевидно, что я использую Regex, но, боюсь.
Поскольку Markdown поддерживает несколько синтаксисов для одного и того же элемента (Setext и atx).
Не могли бы вы дать некоторую отправную точку?
Ответы
Ответ 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>