berlinsurfer: Worddokument in sauberes HTML

Hallo,
im Zuge eines eBooks und anschließender Umwandlung in das ePub-Format möchte ich aus Word eine saubere HTML-Datei erstellen. Leider ist da ziemlich viel Schrott drin (warum eigentlich ?), mein Ansatz war nun mittels php unnötige Tags rauszufiltern, nämlich so:

class convertWord {  
	private function cleanHTML($html) {  
		$html = preg_replace("#<(/)?(font|span|del|ins)[^>]*>#","",$html);  
  
		$html = preg_replace("#<([^>]*)(class|lang|style|size|face)=(\"[^\"]*\"|'[^']*'|[^>]+)([^>]*)>#","<\\1>",$html);  
		$html = preg_replace("#<([^>]*)(class|lang|style|size|face)=(\"[^\"]*\"|'[^']*'|[^>]+)([^>]*)>#","<\\1>",$html);  
  
		return $html;  
	}  
}

Leider steht danach immer noch ziemlich viel Unsinn in der HTML-Datei, kennt jemand eine Lösung mit einem möglichst schlanken Ergebnis ? Vorzugsweise in PHP ? Danke schon mal.

--
Science flies you to the moon.
Religion flies you into buildings.
selfcode: ie:{ fl:| br:^ va:? ls:< fo:{ rl:( n4:{ ss:} de:[ js:} ch:{ sh:) mo:? zu:)
  1. Hi,

    im Zuge eines eBooks und anschließender Umwandlung in das ePub-Format möchte ich aus Word eine saubere HTML-Datei erstellen. Leider ist da ziemlich viel Schrott drin (warum eigentlich ?)

    Weil MicroSoft diesen Schrott für nützlich hielt, wenn es darum gehen sollte, dieses „HTML“ anschließend auf umgekehrtem Wege wieder in Office-Produkte zu importieren, und dabei kleine Zusatzinfos zu übermitteln.

    mein Ansatz war nun mittels php unnötige Tags rauszufiltern

    Stellst du dich bitte in die Ecke und geisselst dich selber – oder müssen wir letzteres übernehmen?

    HTML-Code plus Verarbeitung mittels regulärer Ausdrücke gleich ganz dickes Pfui.
    Bitte hinter die Ohren schreiben (oder an eine andere Stelle, die selten gewaschen wird).

    Leider steht danach immer noch ziemlich viel Unsinn in der HTML-Datei, kennt jemand eine Lösung mit einem möglichst schlanken Ergebnis ? Vorzugsweise in PHP ?

    Tidy
    HTML Purifier

    MfG ChrisB

    --
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
    1. Hi,

      Stellst du dich bitte in die Ecke und geisselst dich selber – oder müssen wir letzteres übernehmen?

      mach ich ;-)

      Tidy
      HTML Purifier

      Super. Danke.

      --
      Science flies you to the moon.
      Religion flies you into buildings.
      selfcode: ie:{ fl:| br:^ va:? ls:< fo:{ rl:( n4:{ ss:} de:[ js:} ch:{ sh:) mo:? zu:)
    2. Lieber ChrisB,

      Tidy
      HTML Purifier

      bei beiden Bibliotheken konnte ich nicht eruieren, ob sie in der Lage sind, diese Fake-Listen, die Word leider produziert (sowas wie <p>- ...</p>), in korrekt( verschaltelt)e Listen zurückzuwandeln. Hast Du damit Erfahrung?

      Liebe Grüße,

      Felix Riesterer.

      --
      ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
      1. bei beiden Bibliotheken konnte ich nicht eruieren, ob sie in der Lage sind, diese Fake-Listen, die Word leider produziert (sowas wie <p>- ...</p>), in korrekt( verschaltelt)e Listen zurückzuwandeln. Hast Du damit Erfahrung?

        Mit Fake-Listen meinst du doch nicht etwa die Konstrukte, die dabei entstehen wenn jemand mit "-" und TAB eine Liste erstellt und das dafür vorgesehene Knöpfchen für UL ignoriert.

        Dann ist dem Autor nicht zu helfen - das ist kein Fehler von Office/Word.

        1. Lieber suit,

          Mit Fake-Listen meinst du doch nicht etwa die Konstrukte, die dabei entstehen wenn jemand mit "-" und TAB eine Liste erstellt und das dafür vorgesehene Knöpfchen für UL ignoriert.

          doch, genau die meine ich, allerdings nicht durch den Autor verbrochen, sondern durch Word selbst. Word generiert dazu XML-Kommentare mit sowas wie <!--[if !supportLists]--> oder <p class="MsoListParagraph">. Schau doch mal in die RegExe des Paste-Plugins des TinyMCE. Dort findest Du sehr viele schöne Sachen, insbesondere das Wiederherstellen von Listen. Leider macht Moxiecode das mit DOM-Funktionen, die ich mit meinen Kenntnissen in PHP nicht nachbilden kann... hätte ich aber gerne.

          Liebe Grüße,

          Felix Riesterer.

          --
          ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
          1. doch, genau die meine ich, allerdings nicht durch den Autor verbrochen, sondern durch Word selbst. Word generiert dazu XML-Kommentare mit sowas wie <!--[if !supportLists]--> oder <p class="MsoListParagraph">. Schau doch mal in die RegExe des Paste-Plugins des TinyMCE. Dort findest Du sehr viele schöne Sachen, insbesondere das Wiederherstellen von Listen. Leider macht Moxiecode das mit DOM-Funktionen, die ich mit meinen Kenntnissen in PHP nicht nachbilden kann... hätte ich aber gerne.

            Das müssen dann Leichen aus alten Word-Versionen sein - die neuen Office-Versionen produzieren eigentlich "ganz ordentliches" HTML.

            DOM-Funktionen (Klassen) hat auch PHP genug, das sollte nicht so tragisch sein, das ganze nachzubauen.

  2. Hallo,

    mit open office auch schwierig?

    Gruß

    jobo