Получение переменных (метаданных документа) из документа MultiMarkdown с помощью PHP - PullRequest
3 голосов
/ 19 декабря 2011

Как я могу получить MultiMarkdown метаданные документа (как определено здесь ), используя php?Я был довольно удивлен, что не смог найти php-парсер MultiMarkdown, PHP Markdown Extra не выполняет MultiMarkdown.

Боюсь, что скрипты , которыеВ комплект поставки MultiMarkdown входят все ответы для тех, кто знает, как определить / использовать пользовательский XSLT, но, к сожалению, это не мой случай.

MultiMarkdown Метаданные документа выглядит так:

Название: Новый документ MultiMarkdown
Автор: Флетчер Т. Пенни
Джон Доу
Дата: 25 июля 2005 г.

Я хотел бы использовать свои собственные свойства и контролировать, где они будут отображаться в выводе.По умолчанию mmd2XHTML выводит вышеуказанные (предварительно определенные) переменные в тегах, но мне нужно отобразить их где-нибудь в теле HTML.

спасибо

Ответы [ 2 ]

0 голосов
/ 29 апреля 2017

для анализа файлов уценки с метаданными вы можете использовать front yaml или kurenai

Я не уверен в точной совместимости с multimarkdown.

front 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();
0 голосов
/ 17 мая 2012

Я не эксперт в php, но, возможно, самый простой способ - вызвать двоичный файл multimarkdown в качестве команды оболочки, например,

multimarkdown -e title foo.txt

Эта команда выведет значение метаданных заголовка для foo.txt.

Это в основном подход, который я использую в Perl, Objective-C и сценариях оболочки, и именно поэтому я добавил флаг -e в MultiMarkdown для начала.

Подход XSLT хорош, если вы используете MMD для фактического генерирования результата HTML, но, вероятно, не столь полезен в этих обстоятельствах.

Другой вариант - написать собственное регулярное выражение, чтобы получить то, что вам нужно, но зачем изобретать велосипед?

...