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
相关产品推荐
相关产品推荐

