chriskonnertz / bbcode
一个使用 PHP 编写的 BBCode '解析器' 的简单尝试。它使用正则表达式,因此无法处理复杂嵌套标签。
v1.1.2
2018-06-17 13:58 UTC
Requires
- php: >=5.3.7
Requires (Dev)
- phpunit/phpunit: ~4
This package is not auto-updated.
Last update: 2024-09-19 00:31:57 UTC
README
一个解析 BBCode 并将其转换为 HTML 代码的库。使用 PHP 编写。
安装
通过 Composer
composer require chriskonnertz/bbcode
从那时起,您可以运行 composer update
来获取此库的最新版本。
您可以使用此库而不使用 Composer,但那时需要注册一个 自动加载函数。
此库需要 PHP 5.5 或更高版本。
使用示例
以下是一个使用此库的 PHP 代码的最小示例。它假设存在一个自动加载器。
$bbcode = new ChrisKonnertz\BBCode\BBCode(); $rendered = $bbcode->render('[b]Hello world![/b]'); echo $rendered;
可用标签
[b]
: 加粗字体 -[b]Hello world[/b]
[i]
: 斜体字体 -[i]Hello world[/i]
[s]
: 删除线字体 -[s]Hello world[/s]
[u]
: 下划线字体 -[u]Hello world[/u]
[code]
: 代码 -[code]Hello world[/code]
[email]
: 邮件(可点击) -[email]test@example.com[/email]
[url]
: URL(可点击) -[url=http://example.com]Example.com[/url]
[img]
: 图片(不可点击) -[img]http://example.com/example.png[/img]
[quote]
: 引用 -[quote]Hello world[/quote]
[youtube]
: 内嵌 YouTube 视频 -[youtube]a-video-id-123456[/youtube]
[font]
: 字体(名称) -[font=Arial]Hello world![/font]
[size]
: 字体大小 -[size=12]Hello world![/size]
[color]
: 字体颜色 -[color=red]Hello world![/color]
[left]
: 文本对齐:左对齐 -[left]Hello world[/left]
[center]
: 文本对齐:居中 -[center]Hello world[/center]
[right]
: 文本对齐:右对齐 -[right]Hello world[/right]
[spoiler]
: 揭示(需要 JavaScript 代码添加行为的纯 HTML 代码) -[spoiler]Hello world[/spoiler]
- 列表
[list]
: 列表 -[list]...list items...[/list]
[*]
: 列表中的项目 -[*]Hello world!\r\n[*]Hello moon!
[li]
: 列表中的项目(别名) -[li]Hello world!\r\n[/li][li]Hello moon!/[li]
- 完整示例:
[list][*]Hello world![li]Hello moon![/li][/list]
您可以使用 addTag($name, Closure $closure)
方法添加自定义标签。
有用的方法
renderRaw($text = null)
: 仅渲染文本,不带任何标签addTag($name, Closure $closure)
: 添加自定义标签(带有名称和 Closure)forgetTag($name)
: 删除具有给定名称的标签ignoreTag($name)
: 将标签添加到要忽略的标签数组中permitTag($name)
: 从要忽略的标签数组中删除标签
BBCode
类还实现了 __toString()
方法,该方法内部调用 render()
方法。
自定义标签示例
此代码将添加一个 [h1]
BBCode 标签,该标签创建一个 <h1>
HTML 标签
$bbcode->addTag('h1', function($tag, &$html, $openingTag) { if ($tag->opening) { return '<h1>'; } else { return '</h1>'; } });
多字节字符
此库支持使用多字节字符。
分支
此存储库最初是从 kaimallea/php-bbcode 分支出来的。然而,自那时以来已经完全重写。
状态
此存储库的状态:维护中。创建一个问题,您将收到回复,通常在 48 小时内。