删除Imperavi Redactor中的空标签
问题描述:
在Yii 2框架中使用Imperavi Redactor。删除Imperavi Redactor中的空标签
当没有文字输入时,Imperavi Redactor产生这个标记:<p><br></p>
。 对于每个换行符,都会附加此标记。
我想删除它,因为没有办法通过RequiredValidator
来验证此类内容。 我想在beforeValidate()
事件中进行删除操作,并检查是否输入了任何文本。 如果除空标签,空格和换行符之外没有文本,则不允许保存。 否则,内容应保存在初始状态。
它可以在preg_replace
的帮助下实现,但我不确定它是否是由Redactor生成的唯一变体。即使是这种解决方案在切换选项的情况下(例如,将paragraphize
选项设置为false
),更新或将所见即所得(WYSIWYG)更改为TinyMCE或CKEditor等等,这种解决方案的唯一变化方式也是如此。
例如,如果它将是<p><br/></p>
或<p> </p>
,正则表达式将失败。 另外我想修整空格,例如<p> <br></p>
。
在Redactor中是否有选项可以做到这一点? removeEmpty选项没有帮助。
我尝试过使用AutoFormat.RemoveEmpty选项的HTML净化器,结果为<p><br/></p>
(对于内容<p></br></p>
)。也许我们需要指定自定义模式或标签列表,究竟应该在段落内删除哪些内容。
答
实测此解决方案:
use yii\helpers\HtmlPurifier;
$text = HtmlPurifier::process($model->text, [
'HTML.ForbiddenElements' => ['p', 'br', ' '],
]);