parsing - Cómo analizar Markdown en PHP?
language-agnostic tree-grammar (4)
Además, hay una implementación orientada a objetos de Markdown que es más rápida: markdown-oo-php
Primero, lo sé, ya hay un analizador de Markdown para PHP. También eché un vistazo a esta pregunta, pero no responde a mi pregunta.
Obviamente, incluso si el título menciona PHP, si es independiente del idioma, porque me gustaría saber cuál es el paso que debo seguir para hacerlo.
He leído sobre PEG , pero debo admitir que realmente no entendí el ejemplo proporcionado con el analizador de PHP.
También he leído sobre CFG .
He encontrado Zend_Markup_Parser_Textile que parece construir un llamado "Token Tree" (¿qué pasa?) Pero actualmente no se puede Zend_Markup_Parser_Textile . (Por cierto, Textil no es Markdown)
Entonces, concretamente, ¿cómo irías a esto?
Obviamente, pensé en usar Regex pero, me temo.
Porque Markdown admite varias sintaxis para el mismo elemento (Setext y atx).
¿Podría darnos un punto de partida?
Deberías echarle un vistazo a Parsedown .
Analiza el texto de Markdown de la forma en que lo hace la gente. Primero, divide los textos en líneas. Luego mira cómo estas líneas comienzan y se relacionan entre sí. Finalmente, busca caracteres especiales para identificar elementos en línea.
Hay PHP Markdown Extra que parece ser popular, puedes comenzar mirando su fuente.
Ciconia - Un nuevo analizador de Markdown para PHP es uno bueno que encontré.
Solo necesitas 3 cosas para hacer:
1.Instale Ciconia y analice el archivo de acuerdo con el Ciconia .
2. Agregue el tema css correspondiente para que sea agradable, como el estilo de github markdown o here .
3. Agregue resaltado de sintaxis javascript, como google prettifier código de JavaScript .
Entonces todo se verá bastante bien.
Si quieres un ejemplo completo, aquí está mi demostración funcional para el estilo de 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>