metnethu/bbcode

bbcode解析器的分支,首先处理自定义标签。

1.2 2022-10-02 20:27 UTC

This package is auto-updated.

Last update: 2024-09-30 01:49:01 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代码添加行为) - [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):添加自定义标签(带有名称和闭包)
  • forgetTag($name):删除具有给定名称的标签
  • ignoreTag($name):将标签添加到忽略标签数组中
  • permitTag($name):从忽略标签数组中删除标签

BBCode类还实现了__toString()方法,该方法内部调用render()方法。

自定义标签示例

此代码将添加一个创建<h1>HTML标签的[h1]BBCode标签。

$bbcode->addTag('h1', function($tag, &$html, $openingTag) {
    if ($tag->opening) {
        return '<h1>';
    } else {
        return '</h1>';
    }
});

多字节字符

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

分支

此存储库最初是从kaimallea/php-bbcode分支出来的。然而,从那时起已经完全重写。

状态

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