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

时间:2011-12-19 02:36:58

标签: php markdown multimarkdown

如何使用php检索 MultiMarkdown 文档元数据 (定义为here)? 我很惊讶我找不到MultiMarkdown php解析器,PHP Markdown Extra没有做MultiMarkdown。

我担心MultiMarkdown附带的the scripts会为那些知道如何定义/使用自定义XSLT的人提供所有答案,但遗憾的是,这不是我的理由。

MultiMarkdown 文档元数据如下所示:

  

标题:新的MultiMarkdown文件
  作者:Fletcher T. Penney
          约翰·多伊   日期:2005年7月25日

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

感谢

2 个答案:

答案 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 yamlkurenai

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

前面的yaml

$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();