it-swarm.com.de

Wie kann ich Microsoft Word Gunk aus eingefügten Inhalten filtern?

Ich habe einige Benutzer, die in einem Gruppenblog posten und in der Lage sind, auszuschneiden und einzufügen, aber ihre Pasten enthalten Dinge wie:

<!– /* Font Definitions */ @font-face {font-family:”Cambria Math”; panose-1:2 4 5 3 5 4 6 3 2 4; mso-font-charset:1; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:0 0 0 0 0 0;} @font-face {font-family:Calibri; panose-1:2 15 5 2 2 2 4 3 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:-520092929 1073786111 9 0 415 0;} @font-face {font-family:”Trebuchet MS”; panose-1:2 11 6 3 2 2 2 2 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:647 0 0 0 159 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-unhide:no; mso-style-qformat:yes; mso-style-parent:”"; margin-top:0in; margin-right:0in; margin-bottom:10.0pt; margin-left:0in; line-height:115%; mso-pagination:Widow-Orphan; font-size:12.0pt; font-family:”Trebuchet MS”,”sans-serif”; mso-fareast-font-family:Calibri; mso-fareast-theme-font:minor-latin; mso-bidi-font-family:”Times New Roman”; mso-bidi-theme-font:minor-bidi; color:black;} p {mso-style-noshow:yes; mso-style-priority:99; mso-margin-top-alt:auto; margin-right:0in; mso-margin-bottom-alt:auto; margin-left:0in; mso-pagination:Widow-Orphan; font-size:12.0pt; font-family:”Times New Roman”,”serif”; mso-fareast-font-family:”Times New Roman”;} .MsoChpDefault {mso-style-type:export-only; mso-default-props:yes; font-size:12.0pt; mso-ansi-font-size:12.0pt; mso-bidi-font-size:12.0pt; mso-ascii-font-family:”Trebuchet MS”; mso-fareast-font-family:Calibri; mso-fareast-theme-font:minor-latin; mso-hansi-font-family:”Trebuchet MS”; mso-bidi-font-family:”Times New Roman”; mso-bidi-theme-font:minor-bidi; color:black;} .MsoPapDefault {mso-style-type:export-only; margin-bottom:10.0pt; line-height:115%;} @page WordSection1 {size:8.5in 11.0in; margin:1.0in 1.0in 1.0in 1.0in; mso-header-margin:.5in; mso-footer-margin:.5in; mso-paper-source:0;} div.WordSection1 {page:WordSection1;} –>

/* Style Definitions */
table.MsoNormalTable
{mso-style-name:”Table Normal”;
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-qformat:yes;
mso-style-parent:”";
mso-padding-alt:0in 5.4pt 0in 5.4pt;
mso-para-margin-top:0in;
mso-para-margin-right:0in;
mso-para-margin-bottom:10.0pt;
mso-para-margin-left:0in;
line-height:115%;
mso-pagination:Widow-Orphan;
font-size:11.0pt;
font-family:”Calibri”,”sans-serif”;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:”Times New Roman”;
mso-fareast-theme-font:minor-fareast;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:”Times New Roman”;
mso-bidi-theme-font:minor-bidi;}

Was kann ich tun, um solchen Code automatisch herauszufiltern?

3
artlung

Der in WordPress integrierte visuelle Texteditor verfügt über eine Schaltfläche, mit der die Microsoft Word-Formatierung entfernt wird. Es trägt die Bezeichnung "Einfügen aus Word" alt text

8
Chris_O

Ich würde vorschlagen, Ozhs TinyMCE Advanced Plugin zu verwenden. Damit können Sie eine Option zum Einfügen aus Word hinzufügen, die all dies für Sie erledigt.

Wenn Sie sich jedoch nicht dafür interessieren, haben Sie ein paar weitere Optionen. So was:

function get_rid_of_mso_junk( $content ){
  return preg_replace( '@(mso|panose)[^:]{1,25}:[^;]+;(\s+)?(\n+)[email protected]', '', $content );
}

add_filter( 'content_save_pre', 'get_rid_of_mso_junk' );

Fügen Sie dem ersten Erfassungssatz in diesem regulären Ausdruck weitere unerwünschte Deklarationen hinzu, um Zeilen hinzuzufügen, die entfernt werden sollten. Zum Beispiel: (mso|panose|other-junk|annoyance).

5
John P Bloch

Für alle, die nach einer Lösung für dieses Problem suchen, habe ich Folgendes getan:

function delete_between($beginning, $end, $string) {
    $beginningPos = strpos($string, $beginning);
    $endPos = strpos($string, $end);
    if (!$beginningPos || !$endPos) {
    return $string;
    }

    $textToDelete = substr($string, $beginningPos, ($endPos + strlen($end)) - $beginningPos);

    return str_replace($textToDelete, '', $string);
}

function clean_content( $content ){
    if( is_home() || is_single()){
        $content = delete_between('<!--[if gte mso', ';}', $content);   
        return $content;
    }else{
    return $content;
}

add_filter( 'the_content', 'clean_content' );
add_filter( 'the_excerpt', 'clean_content' );

Sie können die Zeichenfolgen in der Funktion delete_between durch beliebige Zeichenfolgen ersetzen. Das schien aber für mich zu funktionieren.

2
codeprokanner

Ich habe viel mit Kunden zusammengearbeitet, die mit diesem Problem konfrontiert sind. Der Trick, den ich gefunden habe, ist das Kopieren und Einfügen in die HTML-Ansicht und dann, falls erforderlich, das Zurückschalten zum visuellen Editor, um die Formatierung zu optimieren.

Dies ist auch erforderlich, wenn Sie von einer anderen Website kopieren. Manchmal werden Klassendefinitionen und Inline-Stile versehentlich aus der externen Quelle abgerufen, und dies kann die Anzeige beeinträchtigen, wenn Sie nicht dieselben Klassen oder Stile haben, die von Ihrer Site eingerichtet oder unterstützt werden.

Eine andere Möglichkeit wäre, Ihre Benutzer für Windows Live Writer zu exponieren. Es ist ein Microsoft-Produkt, das völlig kostenlos ist, gut mit dem Kopieren und Einfügen aus Word funktioniert und mit WordPress interagieren kann - Sie schreiben Ihren Beitrag, bearbeiten Ihren Beitrag, verwenden die integrierte Rechtschreibprüfung und formatieren den Beitrag so, dass ergenau angezeigt wirdwie Sie möchten, dann klicken Sie auf "Veröffentlichen", um Ihren Beitrag über XMLRPC an WordPress zu senden. Es ist ein ziemlich solides System, das esunglaublicheinfach macht, einem erstmaligen Blogger das Bloggen beizubringen ... insbesondere, weil die Benutzeroberfläche Word zunächst so ähnlich ist.

2
EAMann