2016-05-17 5 views
0

Dies ist das gleiche Problem wie hier im Jahr 2012 gefragt wurde, die nicht beantwortet wurde:entfernen „blank“ Absatz-Tags von TinyMCE

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

Wenn ich in TinyMCE eingeben drücken, wird es leer Absatz eingeben Tags wie diese:

<p> </p> 

Ich wollte sie vor dem Speichern der Daten in einer MySQL-Tabelle entfernen.

Also habe ich versucht, eine einfache Lösung:

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

Und auch:

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

aber sie funktionieren nicht (zum Beispiel das tun, um die scheinbar leeren Absatz-Tags nicht ersetzen).

Wenn ich dies tun:

$foo = utf8_encode($post_content); 

Und dann $ foo überprüfen: es zeigt, wie:

<p>Â </p> 

So wirklich ist es nicht ein leerer Absatz-Tag, aber ich kann nicht herausfinden, wie um diese Textblöcke zu löschen.

Ich habe auch versucht, diese Versionen (nicht alle zur gleichen Zeit - ich meine in verschiedenen Läufen ...)

$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); 

Aber keiner von ihnen arbeiten.

Antwort

1

Ich habe es herausgefunden - ich verwende HTMLPurifier, um sicherzustellen, dass der von TinyMCE veröffentlichte Inhalt in Ordnung ist.

Nachdem der $ post_content durch HTMLPurifier gegangen ist, enthält dieses lustige Zeichen zwischen den Absatz-Tags.

Deshalb, wenn ich die ersetzen, bevor $ POST_CONTENT durch HTMLPurifier setzen es funktioniert in Ordnung:

$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);