genert/bbcode

从 HTML 解析或转换 BBCode。

维护者

详细信息

github.com/genert/bbcode

源代码

问题

安装次数: 253,497

依赖: 2

建议: 0

安全: 0

星标: 79

关注者: 2

分支: 26

1.1.2 2018-10-20 15:53 UTC

This package is auto-updated.

Last update: 2024-09-19 13:31:45 UTC


README

Latest Version Software License Build Status

从 HTML 解析或转换 BBCode。

安装

需要 PHP 7.1+。

要获取 BBCode 的最新版本,只需使用 Composer 引入项目

$ composer require genert/bbcode

使用方法

convertFromHtml(string $text)

将 BBCode 转换为 HTML 并返回解析后的文本字符串。

示例

use Genert\BBCode\BBCode;

$bbCode = new BBCode();

// Output: '[b]Hello word![/b]'
$bbCode->convertFromHtml('<strong>Hello word!</strong>');

convertToHtml(string $text, [$caseSensitive])

将 HTML 转换为 BBCode 并返回解析后的文本字符串。

示例

use Genert\BBCode\BBCode;

$bbCode = new BBCode();

// Output: '<strong>Hello word!</strong>'
$bbCode->convertToHtml('[b]Hello word![/b]');

此函数还支持通过可选参数进行大小写敏感的 BBCode 解析。

要启用此功能,只需将 BBCode::CASE_SENSITIVE 作为第二个参数传递

// Output: '<strong><i><u>Ran<strong>d</strong>om text</u></i></strong>'
$bbCode->convertToHtml('[B][I][U]Ran[b]d[/b]om text[/u][/I][/b]', BBCode::CASE_SENSITIVE);

stripBBCodeTags(string $text)

从文本中删除 BBCode 标签并返回字符串输出。

示例

use Genert\BBCode\BBCode;

$bbCode = new BBCode();

// Output: 'Hello word!'
$bbCode->stripBBCodeTags('[b]Hello word![/b]');

only(array list or ...args)

设置解析器仅转换指定的 BBCode 标签。

示例

use Genert\BBCode\BBCode;

$bbCode = new BBCode();

// Output: '<strong>Bold</strong> [i]italic[/i]'
$bbCode->only('bold')->convertToHtml('[b]Bold[/b] [i]italic[/i]');

// Or as array
$bbCode->only(['bold'])->convertToHtml('[b]Bold[/b] [i]italic[/i]');

except(array list or ...args)

设置解析器仅转换除列表中指定的所有 BBCode 标签。

示例

use Genert\BBCode\BBCode;

$bbCode = new BBCode();

// Output: '[b]Bold[/b] <i>italic</i>'
$bbCode->except('bold')->convertToHtml('[b]Bold[/b] [i]italic[/i]');

// Or as array
$bbCode->except(['bold'])->convertToHtml('[b]Bold[/b] [i]italic[/i]');

addParser(string $name, string $pattern, string $replace, string $content)

添加基于正则表达式的 BBCode 解析器,以将找到的模式转换为所需的模式。

示例

use Genert\BBCode\BBCode;

$bbCode = new BBCode();

// Add "[link target=http://example.com]Example[/link]" parser.
$bbCode->addParser(
    'custom-link',
    '/\[link target\=(.*?)\](.*?)\[\/link\]/s',
    '<a href="$1">$2</a>',
    '$1'
);

// Output: '<a href="www.yourlinkhere.com">Text to be displayed</a>.'
$bbCode->convertToHtml('[link target=www.yourlinkhere.com]Text to be displayed[/link].');

addHtmlParser(string $name, string $pattern, string $replace, string $content)

添加 HTML 解析器,以将模式转换为所需的模式。

请参阅 addParser 的示例代码。

addLinebreakParser()

将换行解析器添加到 BBCode 解析器列表中,以在 HTML 中将换行转换为 <br />

Laravel 安装

安装 BBCode 后,您需要注册服务提供者。打开 config/app.php 文件,并将以下内容添加到 providers 键。

  • \Genert\BBCode\BBCodeServiceProvider::class,

您还可以在您的 config/app.php 文件的 aliases 键中注册门面。

  • 'BBCode' => \Genert\BBCode\Facades\BBCode::class,

注册门面后,您可以使用库的功能,如下所示

// Output: '<strong>Laravel wins</strong>'
echo BBCode::convertToHtml('[b]Laravel wins[/b]');

// Output: '[b]Do Symphony or not[/b]'
echo BBCode::convertFromHtml('<strong>Do Symphony or not</strong>');

// Output: '<strong>What does<strong> [i]fox say[/i]'
echo BBCode::only('bold')->convertToHtml('[b]What does[/b] [i]fox say[/i]');

测试

要运行测试,只需在终端中运行以下命令

composer test

贡献 & 问题

欢迎贡献。请清楚地解释 PR 的目的,并遵循当前风格。

如果问题描述清晰,并包括简化测试用例和复现步骤,则问题可以最快得到解决。

许可

genert/bbcode 库版权 © Genert Org,并许可在 MIT 许可证(MIT)下使用。

有关更多信息,请参阅 MIT 许可证