it-swarm.com.de

Entfernen Sie verborgene Formatierungen, wenn Benutzer Text aus MS Word in TinyMCE einfügen

Rund ein Fünftel der Post-Einreichungen, die ich erhalte, enthält lächerliche Mengen an versteckten Formatierungen.

Zum Beispiel ist hier ein Teil davon aus einem kürzlich veröffentlichten Beitrag:

<!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:PunctuationKerning/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-US</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
<w:DontFlipMirrorIndents/>
<w:OverrideTableStyleHps/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val="Cambria Math"/>
<m:brkBin m:val="before"/>
<m:brkBinSub m:val="&#45;-"/>
<m:smallFrac m:val="off"/>
<m:dispDef/>
<m:lMargin m:val="0"/>
<m:rMargin m:val="0"/>
<m:defJc m:val="centerGroup"/>
<m:wrapIndent m:val="1440"/>
<m:intLim m:val="subSup"/>
<m:naryLim m:val="undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
DefSemiHidden="true" DefQFormat="false" DefPriority="99"
LatentStyleCount="267">
<w:LsdException Locked="false" Priority="0" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
<w:LsdException Locked="false" Priority="39" Name="toc 1"/>
<w:LsdException Locked="false" Priority="39" Name="toc 2"/>
<w:LsdException Locked="false" Priority="39" Name="toc 3"/>
<w:LsdException Locked="false" Priority="39" Name="toc 4"/>

Es ist eigentlich 650 Zeilen, sehen Sie alles hier .

Tags wie den folgenden werden zufällige HTML-Formatierungen hinzugefügt:

<p class="MsoNormal">

Nach weiteren interessanten Recherchen scheint dies zu geschehen, wenn der Autor Inhalte aus MS Word direkt in den visuellen TinyMCE-Editor einfügt. Und wie detailliert:

Die schlechten Nachrichten werden erst sichtbar, wenn jemand versucht, diese Seite mit einem anderen Browser anzuzeigen und die Seite vollständig falsch formatiert ist oder leer angezeigt wird. Ironischerweise passiert das letztere Szenario am häufigsten, wenn die Seite in Microsoft Internet Explorer [Gut!] Angezeigt wird.

Eine Möglichkeit, das Problem zu lösen, besteht möglicherweise darin, die Schaltfläche Paste from Word zu verwenden.

Dies ist jedoch keine praktikable Lösung, wenn 20% der Einreichungen dieses Problem haben. Gibt es eine Möglichkeit, diese unsinnige Formatierung beim Einfügen zu entfernen?

3

Ich interpretiere die Frage so, dass Sie bereits ein Word-Markup in Ihrem Beitrag haben und dies daher über PHP bereinigen müssen. Wenn ja...

  1. Den Code zum Aufräumen von Word-Inhalten finden Sie hier: http://core.trac.wordpress.org/browser/trunk/src/wp-includes/js/tinymce/plugins/paste/editor_plugin_src.js#L375 Das ist Javascript. Mit ein wenig Arbeit könnten Sie das in PHP umwandeln.
  2. PHP Tidy , falls verfügbar, räumt das auf.
  3. Ich glaube, dass HTML Tidy das kann.
  4. strip_tags wird den Code einfach los. (Geprüft)
  5. wp_kses wird viel davon entfernen, aber einige Anpassungen werden nötig sein, um gut zu funktionieren, zumindest wie durch meinen einfachen Test angezeigt. Vielleicht kann es mit den richtigen Argumenten tun, was Sie wollen.
3
s_ha_dum