cr4zyfl1x/bbcode

用 PHP 编写的一个简单的 BBCode '解析器'。它使用正则表达式,因此无法处理复杂的嵌套标签。

v1.1.4 2023-08-25 22:50 UTC

This package is not auto-updated.

Last update: 2024-09-27 22:28:35 UTC


README

GitHub license Version

一个解析 BBCode 并将其转换为 HTML 代码的库。用 PHP 编写。

安装

通过 Composer

composer require cr4zyfl1x/bbcode

从那时起,你可以运行 composer update 来获取此库的最新版本。

可以在不使用 Composer 的情况下使用此库,但此时必须注册一个 自动加载函数

此库需要 PHP 8.0 或更高版本。

使用示例

以下是一个使用此库的最小化 PHP 代码示例。它假设存在自动加载器。

$bbcode = new Cr4zyFl1x\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=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 代码添加行为) - [spoiler]Hello world[/spoiler]
  • [br]: 换行符 - 第一行[br]第二行
  • [hr]: 水平线 - 上边线[hr]下边线
  • 列表
    • [list]: 列表 - [list]...列表项...[/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): 添加一个自定义标签(带有名称和闭包)
  • 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>';
    }
});

多字节字符

此库支持使用多字节字符。

分支

此存储库最初是从 chriskonnertz/bbcode 分支出来的。

状态

此存储库的状态:维护中。创建一个问题,你将得到一个回复,通常在 48 小时内。