everyday / html-to-quill
PHP HTML 到 Quill Delta 转换器
0.4.0
2022-02-23 17:16 UTC
Requires
- php: >=8.0
- ext-dom: *
- ext-json: *
- everyday/php-quill-delta: ^0.1.6
- symfony/dom-crawler: ^v6.0.0
README
html-to-quill 是一个 PHP 库,用于将 HTML 字符串转换为 Quill Delta。
安装
html-to-quill 可以通过 Composer 安装。
$ composer require everyday/html-to-quill
基本用法
HtmlConverter
类提供了一个简单的接口,用于将 HTML 转换为 Quill Delta
use Everyday\HtmlToQuill\HtmlConverter; $converter = new HtmlConverter(); echo json_encode($converter->convert("<h1>Hello World!</h1>")); // {"ops":[{"insert":"Hello World!"},{"insert":"\n","attributes":{"header":1}}]}
支持自定义标签行为
可以通过自定义转换器支持自定义标签。转换器接收一个 DOMNode 作为输入,并返回一个 DeltaOp。默认转换器可以在 src/Converters 中找到
可以实现自定义转换器以处理额外的行为,这些行为随后实现为 HtmlConverter 的扩展。
示例:将 <style> 标签解析为代码块。
要启用解析样式标签,需要两个转换器。一个用于 <style> 标签本身,另一个用于表示内部数据的 #cdata-section。
在此示例中,将省略命名空间。
class StyleConverter extends CodeConverter { public function getSupportedTags(): array { return ['style']; } }
class CDataConverter extends TextConverter { public function getSupportedTags(): array { return ['#cdata-section']; } }
class StyleCodeBlockEnabledHtmlConverter extends HtmlConverter { public function __construct(){ parent::__construct(); // We want our default converters. $this->converters[] = new StyleConverter(); $this->converters[] = new CDataConverter(); } }
这些类以与基本用法示例相同的方式组合,以生成我们可用的输出
$converter = new StyleCodeBlockEnabledHtmlConverter(); echo json_encode($converter->convert("<style>.warning {background-color: red;}</style>")); // {"ops":[{"insert":".warning {background-color: red;}","attributes":{"code":true}},{"insert":"\n"}]}