You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel中mewebstudio/Purifier添加自定义标签提示不支持如何解决

问题原因

HTML Purifier 默认仅支持标准HTML标签,仅在HTML.Allowed规则中添加自定义标签无效,必须先注册自定义标签的结构定义,Purifier才能正常识别。

解决步骤

1. 修改config/purifier.php配置

在settings.default配置块中新增自定义标签注册规则,完整配置参考如下:

return [
    'encoding'           => 'UTF-8',
    'finalize'           => true,
    'ignoreNonStrings'   => false,
    'cachePath'          => storage_path('app/purifier'),
    'cacheFileMode'      => 0755,
    'settings'      => [
        'default' => [
            'HTML.Doctype' => 'XHTML 1.0 Transitional',
            // 保留原有允许规则,加上自定义标签
            'HTML.Allowed' => 'div,b,strong,i,em,a[href|title],ul,ol,ol[start],li,p[style],br,span[style],img[width|height|alt|src],*[style|class],pre,hr,code,h2,h3,h4,h5,h6,blockquote,del,table,thead,tbody,tr,th,td,image-slides[images]',
            
            // 新增以下配置,注册自定义标签
            'HTML.DefinitionID' => 'custom-html-schema', // 自定义规则的唯一标识
            'HTML.DefinitionRev' => 1, // 规则版本号,每次修改自定义标签规则将该值+1即可自动刷新缓存
            'custom_definition' => function ($def) {
                // 注册<image-slides>标签
                // 参数依次为:标签名、元素类型(Block块级/Inline内联)、允许的子内容类型、通用属性集合、自定义属性列表
                $def->addElement(
                    'image-slides',
                    'Block',
                    'Flow',
                    'Common',
                    [
                        'images' => 'Text' // 定义images属性为文本类型
                    ]
                );
                // 如果有其他自定义标签,在这里重复调用addElement注册即可
            },
            // 其他原有配置保持不变
            // ...
        ],
        // ...
    ]
];

2. 清理缓存

删除storage/app/purifier目录下的所有缓存文件,或执行命令php artisan cache:clear清理缓存。

效果验证

再次调用clean()方法处理用户输入,<image-slides>标签和images属性会被正常保留,不会被过滤也不会报错。


内容的提问来源于stack exchange,提问作者DengSihan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 15:15:04