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

v1.1.2 2018-06-17 13:58 UTC

This package is not auto-updated.

Last update: 2024-09-19 00:31:57 UTC


README

Build Status GitHub license Version

一个解析 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 小时内。