HTML-Tabelle in Text konvertieren

8

Ich arbeite an einem Projekt, das HTML-E-Mails in Text konvertieren muss. Im Folgenden finden Sie eine vereinfachte Version des HTML-Codes:

%Vor%

Das erwartete Ergebnis sollte in einer Textdatei (mit gut ausgerichteten Spalten) wie folgt aussehen:

%Vor%

Meine Idee ist das Parsen des HTML-Inhalts nach DOMDocument. Dann werde ich eine Standardbreite für die Tabelle festlegen (z. B. 100 Leerzeichen) und dann die Breite jeder Spalte von% in Anzahl von Leerzeichen konvertieren (basierend auf colspan & amp; width Attribut von <td> tag). Dann subtrahiere ich diese Spaltenbreite auf strlen der Daten in jeder Spalte, um die Anzahl der Leerzeichen, die ich pad_right benötige, in der Zeichenkette zu archivieren, damit alles vertikal ausgerichtet wird.

Ich habe auf diese Weise gearbeitet, wurde nicht archiviert, was ich will, aber ich frage mich, ob es dumm ist oder jemand einen besseren Weg kennt, bitte hilf mir.

Auch wenn es um Multibyte-Sprachen geht (Japanisch, Koreanisch usw.), glaube ich nicht, dass mein Ansatz funktionieren würde, weil ihre Charaktere größer als ein Leerzeichen sind und es ein Chaos wird.

Kann mir bitte jemand helfen?

    
Olizt 19.06.2012, 14:38
quelle

1 Antwort

11

Erfinde das Rad nicht neu. Das Rendern von Tabellen ist schwierig, das Rendern von Tabellen mit nur Text ist noch schwieriger. Um die Komplexität eines textbasierten Tabellenrenderers zu verdeutlichen, der alle Funktionen von HTML bietet, werfen Sie einen Blick auf w3m, das Open Source ist: diese 3000 Zeilen Code gibt es nur, um HTML-Tabellen anzuzeigen.

HTML in Text umwandeln

Es gibt textbasierte Browser, die von der Kommandozeile verwendet werden können, wie zB lynx. Sie könnten fwrite Ihre HTML-Tabelle in eine Datei einfügen, diese Datei in den textbasierten Browser übergeben und deren Ausgabe übernehmen.

Hinweis: Textbasierte Browser werden im Allgemeinen in einer Shell verwendet, die normalerweise in Monospace angezeigt wird. Dies bleibt eine Voraussetzung.

lynx und w3m sind beide unter Windows verfügbar und Sie müssen sie nicht "installieren", Sie brauchen nur die ausführbaren Dateien und die Erlaubnis, sie von PHP auszuführen.

Codebeispiel:

%Vor%

w3m.exe muss in Ihrem Arbeitsverzeichnis sein.

(habe es nicht versucht)

Rendert eine Texttabelle

Wenn Sie eine native PHP-Lösung wünschen, gibt es auch mindestens ein Framework ( Ссылка ), das auf Konsolenanwendungen für PHP ausgerichtet ist ein Tabellen-Renderer.

Es wandelt HTML nicht in Text um, aber es hilft Ihnen beim Erstellen einer Text formatierten Tabelle mit Unterstützung für Multiline-Zellen (was der komplizierteste Teil zu sein scheint).

Mit CLIFramework benötigen Sie einen Code wie diesen, um Ihre Tabelle zu rendern:

%Vor%

Der CLIFramework-Tabellenrenderer scheint jedoch nichts zu unterstützen, was "colspan" ähnelt.

Hier ist die Dokumentation für die Tabellenkomponente: Ссылка

    
Roman 19.06.2012, 15:02
quelle

Tags und Links