删除Imperavi Redactor中的空标签

时间:2014-12-08 05:48:07

标签: php wysiwyg yii2 htmlpurifier redactor

将Imperavi Redactor与Yii 2框架结合使用。

如果未输入任何文本,Imperavi Redactor会生成此标记:<p><br></p>。 对于每个换行符,也会附加此标记。

我想删除此内容,因为无法通过RequiredValidator正常验证此类内容。 我想在beforeValidate()事件中删除并检查是否输入了任何文本。 如果除空标签,空格和换行符之外没有文本,则不允许保存。 否则,内容应保存在初始状态。

可以在preg_replace的帮助下实现,但我不确定它是否是Redactor生成的唯一变体。甚至它是唯一的变体,这种解决方案在切换选项时不稳健(例如将paragraphize选项设置为false),更新或更改WYSIWYG例如TinyMCE或CKEditor

例如,如果它是<p><br/></p><p>&nbsp;</p>,则regex将失败。 我也想要修剪空格,例如<p> <br></p>

Redactor中有选项吗? removeEmpty选项无效。

我尝试了使用AutoFormat.RemoveEmpty选项的HTML Purifier,结果是<p><br/></p>(对于内容<p></br></p>)。也许我们需要在段落中指定自定义模式或标签列表。

1 个答案:

答案 0 :(得分:1)

找到了这个解决方案:

use yii\helpers\HtmlPurifier;

$text = HtmlPurifier::process($model->text, [
    'HTML.ForbiddenElements' => ['p', 'br', '&nbsp;'],
]);