parsing language-agnostic markdown tree-grammar

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.



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>