Удалить пустые теги в Imperavi 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>, регулярное выражение не удастся.
Также хочу обрезать пробелы, например <p> <br></p>,

Есть ли возможность в Redactor сделать это? removeEmpty вариант не помогает.

Я пытался очистить HTML с AutoFormat.RemoveEmpty вариант и результат был <p><br/></p> (для содержания <p></br></p>). Может быть, нам нужно указать пользовательский шаблон или список тегов, что именно должно быть удалено внутри абзацев.

1

Решение

Нашел это решение:

use yii\helpers\HtmlPurifier;

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

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]