everyday/html-to-quill

PHP HTML 到 Quill Delta 转换器

0.4.0 2022-02-23 17:16 UTC

This package is auto-updated.

Last update: 2024-09-23 23:01:47 UTC


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"}]}