mariohuq/md-html-converter

PHP 内联 Markdown ↔ HTML 转换器

dev-main 2021-06-14 04:51 UTC

This package is auto-updated.

Last update: 2024-09-08 13:13:38 UTC


README

此转换器基于wouterj的PHP PEG 解析器

安装

使用Composer安装 md-html-converter

$ composer require mariohuq/md-html-converter:dev-main

使用方法

使用 MarkdownGrammar#parse() 解析输入字符串。返回值是字符串匹配的部分或无匹配时返回 null

use Mariohuq\MarkdownGrammar;

$grammar = new MarkdownGrammar();

echo $grammar->parse('text1 **bold1 __italic1__** ~~`code1`~~');
// text1 <strong>bold1 <em>italic1</em></strong> <s><code>code1</code></s>

尝试转换器

您可以在位于/web/index.php的测试页面上尝试此转换器。

以8080(或任何其他端口号)为本目录启动本地Web服务器并打开localhost:8080。

支持的Markdown语法

此转换器支持Telegram的Markdown语法

**bold**
__italics__
~~strike~~
`code`
[link title](https://www.example.com)

粗体、斜体和删除线可以以各种方式嵌套,链接标题可以是粗体、斜体、删除线或代码。所有反引号内的语法都将被忽略。尚未支持字符转义。

PEG 语法

BLOCK_OR_LINK_S <- (BLOCK / LINK)+
BLOCK           <- BOLD / ITALICS / STRIKE / CODE / ANY
BOLD            <- ASTERISK BLOCK_OR_LINK_S ASTERISK
ITALICS         <- UNDERLINE BLOCK_OR_LINK_S UNDERLINE
STRIKE          <- TILDA BLOCK_OR_LINK_S TILDA
CODE            <- BACKTICK ANY BACKTICK
LINK            <- LBRACK BLOCK+ LINK_SEP ANY RPAREN

ASTERISK  <- '**'
UNDERLINE <- '__'
TILDA     <- '~~'
BACKTICK  <- [`]
LBRACK    <- '['
LINK_SEP  <- ']['
RPAREN    <- ')'
ANY       <- [^)*[\]_`~]+
ANY_CODE  <- [^`]+