删除"空白"来自TinyMCE的段落标签

时间:2016-05-17 15:23:03

标签: php tinymce tinymce-4

这与2012年在这里提出的问题相同,但未得到回答:

Using regex to remove empty paragraph tags <p> </p> (standard str_replace on "space" not working)

当我在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);

但它们都不起作用。

1 个答案:

答案 0 :(得分:1)

我明白了 - 我正在使用HTMLPurifier来确保TinyMCE发布的内容没问题。

在$ post_content通过HTMLPurifier之后,它在段落标记之间包含了这个有趣的字符。

因此,如果我在通过HTMLPurifier放置$ post_content之前执行替换它可以正常工作:

var mTimeLeft = 120;
var timerRunning = false;

function timer(timeLeft) {
    if (!timerRunning || timeLeft <= 0) {
        timerRunning = false;
        return;
    }

    if (timeLeft !== undefined) {
        mTimeLeft = (timeLeft);
    }

    //Set something on the page to show the time left
    $('#time-left').text(parseInt(mTimeLeft) + 'sec');

    mTimeLeft--;
    drawCircle(mTimeLeft * 0.833333);

    if (mTimeLeft <= 0) {
        timerRunning = false;
        return;
    }

    setTimeout(timer, 1000);
}