将Imperavi Redactor与Yii 2框架结合使用。
如果未输入任何文本,Imperavi Redactor会生成此标记:<p><br></p>
。
对于每个换行符,也会附加此标记。
我想删除此内容,因为无法通过RequiredValidator
正常验证此类内容。
我想在beforeValidate()
事件中删除并检查是否输入了任何文本。
如果除空标签,空格和换行符之外没有文本,则不允许保存。
否则,内容应保存在初始状态。
可以在preg_replace
的帮助下实现,但我不确定它是否是Redactor生成的唯一变体。甚至它是唯一的变体,这种解决方案在切换选项时不稳健(例如将paragraphize
选项设置为false
),更新或更改WYSIWYG例如TinyMCE或CKEditor
例如,如果它是<p><br/></p>
或<p> </p>
,则regex将失败。
我也想要修剪空格,例如<p> <br></p>
。
Redactor中有选项吗? removeEmpty选项无效。
我尝试了使用AutoFormat.RemoveEmpty选项的HTML Purifier,结果是<p><br/></p>
(对于内容<p></br></p>
)。也许我们需要在段落中指定自定义模式或标签列表。
答案 0 :(得分:1)
找到了这个解决方案:
use yii\helpers\HtmlPurifier;
$text = HtmlPurifier::process($model->text, [
'HTML.ForbiddenElements' => ['p', 'br', ' '],
]);