如何使用php检索 MultiMarkdown 文档元数据 (定义为here)? 我很惊讶我找不到MultiMarkdown php解析器,PHP Markdown Extra没有做MultiMarkdown。
我担心MultiMarkdown附带的the scripts会为那些知道如何定义/使用自定义XSLT的人提供所有答案,但遗憾的是,这不是我的理由。
MultiMarkdown 文档元数据如下所示:
标题:新的MultiMarkdown文件
作者:Fletcher T. Penney
约翰·多伊 日期:2005年7月25日
我想使用自己的属性并控制它们在输出中的显示位置。默认情况下,mmd2XHTML在标签中输出上述(预定义的)变量,但我需要在HTML主体中的某处显示它们。
感谢
答案 0 :(得分:0)
我不是php的专家,但最简单的方法可能是调用multimarkdown二进制文件作为shell命令,例如。
multimarkdown -e title foo.txt
此命令将输出foo.txt的标题元数据的值。
这基本上是我在perl,Objective-C和shell脚本中使用的方法,这也是我开始将-e
标志添加到MultiMarkdown的原因。
如果您使用MMD实际生成HTML结果,那么XSLT方法很棒,但在这种情况下可能没那么有用。
你的另一个选择就是写一个自定义正则表达式来抓住你需要的东西,但为什么要重新发明轮子?
答案 1 :(得分:0)
要解析包含元数据的markdown文件,您可以使用front yaml或kurenai
我不确定与multimarkdown的确切兼容性。
$parser = new Mni\FrontYAML\Parser();
$document = $parser->parse($str);
$yaml = $document->getYAML();
$html = $document->getContent();
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();