mpratt / luthor
PHP 可扩展 Markdown Lexer/Parser
Requires
- php: >=5.3
This package is auto-updated.
Last update: 2024-09-11 14:02:51 UTC
README
** 警告:此库未准备好用于生产环境 **
Luthor 是一个可扩展的 Markdown Lexer/Parser,用于 PHP。它将 Markdown 文本转换为 HTML。换句话说,它一行一行地读取 Markdown 文本,并分析其内容。它使用 Lexer 将每个元素标记化,并将其传递给解析器。解析器在标记上操作,并返回一个 HTML 字符串。
此库的关键特性是您可以轻松扩展标记映射,这使您能够实际拥有自定义符号并构建自己的 Markdown。还可以轻松完成其他一些有趣的事情,例如应用过滤器或修改处理或显示标记的方式。它还提供了一组配置选项,可用于更改库的行为!有关如何进行操作的更多信息,请参阅使用部分。或者,最好的方法是查看源代码并一探究竟。
以下是支持的标记列表
- 段落和换行符
- 标题
- 引用块
- 代码块和带围栏的代码块
- 列表(以
*
、-
、+
或1.
开头) - 水平线
- 跨度元素(链接、强调、代码、图像、删除文本)
- 元素转义
- 脚注和缩写
- 通过
{#id .class1 .class2}
在标题、链接和图像上使用特殊属性
此库可以使用,但 不 够稳定,可在生产环境中使用。与其他 Markdown 解析器相比,这个解析器速度很慢!非常慢!并且它非常重视缩进,也许有点过分。
我不会为此库提供支持,这只是一个爱好项目。库的某些部分可能可以更优雅地完成,也许以后我会清理代码库,但我不做任何承诺。
如果您正在寻找一个可扩展的 Markdown 解析器,我认为最好的替代方案是 Ciconia!优雅且稳定,需要 PHP 5.4。
要求
- PHP >= 5.3
安装
使用 Composer 安装
如果您使用 Composer 来管理依赖项,您可以通过创建 composer.json 并添加以下内容来使用此库:
{
"require": {
"mpratt/luthor": "dev-master"
}
}
保存它并运行 composer.phar install
独立安装(不使用 Composer)
下载最新版本或克隆此存储库,将 Lib/Luthor
目录放置在您的项目中。之后,您只需要包含 Autoload.php 文件。
require '/path/to/Luthor/Autoload.php'; $embera = new \Luthor\Luthor();
或者,如果您已经有了 PSR-0 合规的自动加载器,您只需注册 Luthor 即可。
$loader->registerNamespace('Luthor', 'path/to/Luthor');
基本用法
$lex = new \Luthor\Luthor(); echo $lex->parse('**I dont like Superman**'); // <p><strong>I dont like Superman</strong></p>
为了扩展 lexer/parser,您需要创建一个新的类,该类扩展 InlineAdapter 或 BlockAdapter。使用 addExtension()
方法注册扩展
class MyExtension extends \Luthor\Parser\Extensions\Adapters\InlineAdapter { protected $regex = '~\^([^ ]+)~A'; public function parse() { return '<strong>' . $this->matches['1'] . '</strong>'; } } $lex = new \Luthor\Luthor(); $lex->addExtension(new MyExtension()); echo $lex->parse('I love ^Luthor !'); // <p>I love <strong>Luthor</strong>!</p>
当文本已经处理完毕时,会运行过滤器
$lex = new \Luthor\Luthor(); $lex->addFilter(function ($text){ return str_replace('Hello', 'World', $text); }); echo $lex->parse('Hello World!'); // <p>World World!</p>
请查看 Lib 或 Tests 目录以了解其他配置选项。
许可证
MIT 有关完整的版权和许可信息,请参阅 LICENSE 文件。
为什么哦?
是啊,我知道,又一个Markdown解析器?真的吗?——你知道,有时候你会想,“嘿,我想多了解一下X,所以我打算写Y看看会发生什么?”这样的想法。这曾经也发生在我身上,很久以前我开始只是为了好玩/学习而编写这个词法分析器/解析器。问题是,我从未完成它。
所以有一天,我在翻看我的“未完成项目”文件夹时,发现了这个代码库的一半,并决定是时候完成它或者删掉了。我最终重写了大部分代码,虽然有些地方可以更加仔细地考虑,但最终我认为结果还不错。
作者
嗨!我是迈克尔·普雷特,我来自哥伦比亚!
我的个人网站是西班牙语的。