s9e \ TextFormatter创建自定义标签和模板支持#话题#功能

本文分享了使用S9E文本格式化库进行内容解析的经验,详细介绍了如何通过Composer安装,自定义标签支持,以及实现话题ID的创建与查找。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近使用s9e做内容解析,但是由于没啥中文的资料和文档,记录一下。

文档地址:https://s9etextformatter.readthedocs.io/

 

使用:

1.在composer中加入s9e的扩展包

"require" : {
		"s9e/text-formatter": "^2.4",
    },

2.增加tag支持##解析和渲染

$configurator = new s9e\TextFormatter\Configurator;

//增加标签
$tag = $configurator->tags->add('topic');
//增加标签属性
$tag->attributes->add('id');
//设置属性的值
$tag->filterChain->prepend([static::class, 'addTopicId']);
//设置渲染模板
$tag->template = '<span id="topic" value="{@id}"><xsl:apply-templates/></span>';
//设置标签正则匹配规则
$configurator->Preg->match('/\B#(?<topic>[\x{4e00}-\x{9fa5}\w]+)#/ui', $tagName);

addTopicId函数用来在数据库中创建、查找话题ID

public static function addTopicId($tag)
{
        $topic = Topic::firstOrCreate(
            ['content' => $tag->getAttribute('topic')]
        );

        $tag->setAttribute('id', $topic->id);
        return true;
        
}

3.渲染数据

$renderer = s9e\TextFormatter\Renderer::getRenderer();
$parser   = s9e\TextFormatter\Parser::getParser();
$html = $renderer->render($content);
$text = $parser->parse($content);

原文  "#话题#"

数据库中存储  ”<topic id="1">#话题#</topic>“

渲染后的数据  ”<span  id="topic" value="1">#话题#</span>“

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值