用PHP从MultiMarkdown文档中检索变量(文档元数据)


Retrieving variables (document metadata) from a MultiMarkdown document with PHP

我如何检索MultiMarkdown 文档元数据(定义在这里)使用php?我很惊讶,我找不到一个MultiMarkdown php解析器,php Markdown Extra不做MultiMarkdown。

我担心MultiMarkdown附带的脚本已经为那些知道如何定义/使用自定义XSLT的人提供了所有答案,但遗憾的是,这不是我的情况。

MultiMarkdown Document Metadata如下所示:

标题:新建MultiMarkdown文档
作者:Fletcher T. Penney
John Doe
日期:2005年7月25日

我想使用我自己的属性并控制它们在输出中的显示位置。默认情况下,mmd2XHTML在标记中输出上述(预定义的)变量,但是我需要在HTML正文的某个地方显示它们。

谢谢

我不是php专家,但最简单的方法可能是将multimarkdown二进制文件作为shell命令调用,例如

multimarkdown -e title foo.txt

该命令将输出foo.txt标题元数据的值。

这基本上是我在perl, Objective-C和shell脚本中使用的方法,这也是我在MultiMarkdown中添加-e标志的原因。

如果使用MMD实际生成HTML结果,XSLT方法是很好的,但在这种情况下可能不太有用。

你的另一个选择是编写一个自定义正则表达式来获取你需要的东西,但是为什么要重新发明轮子呢?

对于解析带有元数据的markdown文件,您可以使用front yaml或kurenai

我不确定与multimarkdown的确切兼容性。

面前yaml

$parser = new Mni'FrontYAML'Parser();
$document = $parser->parse($str);
$yaml = $document->getYAML();
$html = $document->getContent();

kurenai

kurenai可以解析不同的元数据内容类型,如yaml和json。

$kurenai = new 'Kurenai'Parser(
    new 'Kurenai'Parsers'Metadata'JsonParser,
    new 'Kurenai'Parsers'Content'MarkdownParser
);
$document = $kurenai->parse('path/to/document.md');
$document->getRaw();
$document->getMetadata();
$document->getContent();