5 Stimmen

Umwandlung eines Word-Dokuments in brauchbares HTML in PHP

Ich habe eine Reihe von Word-Dokumenten, die ich mit einem von mir geschriebenen PHP-Tool veröffentlichen möchte. Ich kopiere die Word-Dokumente und füge sie in ein Textfeld ein und speichere sie dann mit dem PHP-Programm in MySQL. Das Problem, das sich mir stellt, sind die vielen nicht standardisierten Zeichen, die Word-Dokumente enthalten, wie geschweifte Anführungszeichen und Ellipsen ("..."). Was ich im Moment tue, ist manuell suchen und ersetzen diese Art von Dingen (und auch fremde Symbole wie e-acute) mit entweder einfachem Text oder HTML-Entitäten (&eacute ; etc.) Gibt es eine Funktion in PHP kann ich aufrufen, dass die Ausgabe eines Word-Dokument nehmen und konvertieren alles, was Entitäten in Entitäten sein sollte, und andere Symbole, die nicht richtig in Firefox in Symbole, die anzeigen.

Gracias.

5voto

eyelidlessness Punkte 60421

Damit habe ich in der Vergangenheit gute Erfahrungen gemacht:

$str = mb_convert_encoding($str, 'HTML-ENTITIES', 'UTF-8')

3voto

Richard Turner Punkte 11994

Eine bessere Lösung wäre, sicherzustellen, dass Ihre Datenbank so eingerichtet ist, dass sie UTF-8-Zeichen unterstützt. Die zusätzlichen Zeichen, die im erweiterten Satz verfügbar sind, sollten alle "Nicht-Standard-Zeichen" abdecken, von denen Sie sprechen.

Andernfalls, wenn Sie diese Zeichen wirklich in HTML-Entities umwandeln müssen, verwenden Sie htmlentities() .

1voto

Bheema Punkte 11

Ich denke, dass all diese Antworten einen wichtigen Punkt übersehen. Windows selbst verwendet eine Windows-Variante von latin1. Wenn Sie also einige Sonderzeichen (wie asymmetrische Anführungszeichen) in ein Formular auf einem Windows-Rechner einfügen und dieses an eine Unix-Box (oder irgendetwas anderes, das nicht von Microsoft stammt) senden (sei es an eine Datenbank oder was auch immer), werden einige der Zeichen nicht an etwas angepasst, was das Unix-System versteht, daher die verwirrten und verstümmelten Zeichen. Das bedeutet, dass selbst bei einer UTF-8-Datenbank und der Verwendung von Html-Einträgen immer noch einige bösartige Zeichen durchkommen, weil sie vom Betriebssystem nicht erkannt werden - sie sind nicht einmal Teil von UTF-8 - es sind reine Microsoft-Erfindungen. Ich würde gerne wissen, von einer glatten Lösung - was ich tue, ist manuell Blacklist die Zeichencodes der Microsoft-only-Zeichen, die ich mit einem (auch manuell) Liste der UTF-8-Zeichen begegnet sind, tun ein str_replace für alle diese, und DANN können Sie tun, was Sie mit ihnen wollen - iconv, htmlentities, speichern Sie direkt in eine utf8-Datenbank, es spielt keine Rolle mehr.

Mein Verständnis von all dem ist ein wenig wackelig - siehe unter http://www.cs.tut.fi/~jkorpela/www/Windows-chars.html für eine ausgezeichnete Erklärung, die ich oben in Kurzform wiedergegeben habe. - Wenn jemand eine bessere Lösung hat (sicherlich gibt es eine!), wie man das, was in diesem Artikel erklärt wird, in PHP umsetzen kann... Ich würde mich freuen, sie zu hören!

0voto

acrosman Punkte 12575

Mit htmlspecialchars() kommen Sie sehr weit, aber Vorsicht, Word-Dokumente sind unübersichtlich.

0voto

tylerl Punkte 29162

Hier ist eine Lösung, die ich mir für das Problem mit dem nicht portablen Windows-Zeichensatz ausgedacht habe. Sie ersetzt die anstößigen fast-lateinischen-1-Zeichen durch ihre entsprechenden HTML-Entitäten.

$translation=array(
    // reference from http://www.cs.tut.fi/~jkorpela/www/windows-chars.html
    "\x82" => "‚",
    "\x83" => "ƒ",
    "\x84" => "„",
    "\x85" => "…",
    "\x86" => "†",
    "\x87" => "‡",
    "\x88" => "ˆ",
    "\x89" => "‰",
    "\x8a" => "Š",
    "\x8b" => "‹",
    "\x8c" => "Œ",
    "\x91" => "‘",
    "\x92" => "’",
    "\x93" => "“",
    "\x94" => "”",
    "\x95" => "•",
    "\x96" => "–",
    "\x97" => "—",
    "\x98" => "˜",
    "\x99" => "™",
    "\x9a" => "š",
    "\x9b" => "›",
    "\x9c" => "œ",
    "\x9f" => "Ÿ",
);    
return str_replace(array_keys($translation),array_values($translation),$input);

Es funktioniert für mich TM

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X