31

まず、PHP用のMarkdownパーサーがすでに存在することを私は知っています。私もこの質問を調べましたが、それは私の質問に答えません。

明らかに、タイトルがPHPに言及していても、言語に依存しない場合は、それを行うために実行する必要のあるステップを知りたいので。

私はPEGについて読んだことがありますが、認めざるを得ません。PHPパーサーで提供されている例を本当に理解していませんでした。

CFGについても読みました。

いわゆる「トークンツリー」を構築しているように見えるZend_Markup_Parser_Textileを見つけました(それはどうですか?)が、現在は使用できません。(ところで、テキスタイルはマークダウンではありません)

それで、具体的には、これにどのように行きますか?

明らかに、私は正規表現を使用することについて考えていますが、恐れています。

Markdownは同じ要素(Setextとatx)に対して複数の構文をサポートしているためです。

出発点を教えていただけますか?

4

5 に答える 5

11

人気があると思われるPHP Markdown Extraがあり、そのソースを調べることから始めることができます。

于 2011-02-25T11:30:05.190 に答える
5

また、より高速な Markdown のオブジェクト指向実装もあります: markdown-oo-php

于 2012-10-20T13:31:05.617 に答える
2

Ciconia - A New Markdown Parser for PHP は、私が見つけた良いものです。

必要な作業は 3 つだけです。

1.ドキュメントに従ってCiconiaをインストールし、ファイルを解析します。
2. 対応する css テーマを追加して、github マークダウン スタイルまたはhereのように、適切にします。3. google Javascript code prettifier
のような構文強調表示 JavaScript を追加します。

そうすれば、すべてがかなり良く見えます。

完全な例が必要な場合は、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>
于 2016-06-20T09:56:36.223 に答える