Удаление & quot; пусто & quot; теги абзаца от TinyMCE

Это та же проблема, что была задана здесь в 2012 году, на которую не было ответа:

Использование регулярных выражений для удаления пустых тегов абзаца <п> </п> (стандартный str_replace on "пространство" не работает)

Когда я нажимаю ввод в TINYMCE, он появляется для ввода пустых тегов абзаца, например:

<p> </p>

Я хотел удалить их перед сохранением данных в таблицу MySQL.

Поэтому я попробовал простое исправление:

$post_content = str_replace('<p> </p>', '', $content_from_mce);

А также:

$post_content = str_replace('<p>&nbsp;</p>', '', $content_from_mce);

Однако они не работают (например, не заменяют явно пустые теги абзаца).

Если я сделаю это:

$foo = utf8_encode($post_content);

И затем проверьте $ foo: это показывает как:

<p>Â </p>

Так что на самом деле это не пустой тег абзаца, но я не могу понять, как удалить эти блоки текста.

Я также пробовал эти версии (не все одновременно — я имею в виду в разных сериях …)

$post_content = str_replace('<p>Â </p>','',$post_content);
$post_content = preg_replace('~<p>\s*<\/p>~i','',$post_content);
$post_content = preg_replace('#<p>&nbsp;</p>#i','<p></p>', $post_content);
$post_content=str_replace("/<p> <\/p>/","",$post_content);

Но никто из них не работает.

0

Решение

Я понял это — я использую HTMLPurifier чтобы убедиться, что размещенный контент от TinyMCE в порядке.

После того, как $ post_content прошел через HTMLPurifier, он содержит этот забавный символ между тегами абзаца.

Поэтому, если я сделаю замену перед тем, как положить $ post_content через HTMLPurifier, все будет хорошо:

$config =   HTMLPurifier_Config::createDefault();
$purifier = new HTMLPurifier($config);

// get contents of "post_content" field
$post_content = $_POST['post_content'];

// remove blank paragraph lines
$post_content = str_replace('<p>&nbsp;</p>','',$post_content);

// now put $post_content through HTMLPurifier
$post_content = $purifier->purify($post_content);
1

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

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

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