Perl-Skript und HTML-Entities

Bash, Shell, PHP, Python, Perl, CGI
Anonymous

Perl-Skript und HTML-Entities

Post by Anonymous » 2008-08-27 19:42

Hallo,

ich habe folgendes vor:
ich habe ein Perl-Script, welches aus einem Ordner mit E-Mails aus den einzelnen Nachrichten verschiedene Werte extrahiert und diese Daten anschließend tabellarisch per Mail verschickt. Ich möchte keine HTML-Tabelle nutzen, weshalb ich die Tabelle mit einem <pre>-Tag umrahme und als HTML-Mail verschicke. Das Ergebnis sieht dann in etwa so aus:

Code: Select all

Spalte 1      Spalte 2          Spalte 3
----------------------------------------
blablubb      Text Text         1234
blubbblaa     nochmal Text, ab  678923


In Spalte 2 wird der Betreff der Mails ausgegeben. Damit die Länge passt, verwende ich folgende Funktion:

Code: Select all

printf("%-.16s  ", @sub[1]);


Jetzt besteht aber das Problem, dass im Betreff auch HTML-Entities vorkommen können. So wird dann aber z.B. ein "ä" (&auml;) als 6 Zeichen gezählt. Der Mail-Client wandelt die Entities aber um was folgende Verschiebung in der Tabelle zur Folge hat:

Code: Select all

Spalte 1      Spalte 2          Spalte 3
----------------------------------------
blablubb      Text Text         1234
blubbbla      ein ä im T  678923


Hinzu kommt, dass ich mich mit Perl nicht wirklich auskenne.
Hat jemand einen Tipp, wie ich dieses Problem möglichst unkompliziert beheben könnte?

freddy36
RSAC
Posts: 277
Joined: 2008-03-20 17:31

Re: Perl-Skript und HTML-Entities

Post by freddy36 » 2008-08-27 23:24

Da wirst du selber ein paar Zeilen programmieren müssen (Eine entsprechende Anzahl von Leerzeichen selber hinzufügen und dabei &*; als ein Zeichen interpretieren.
Alternativ charset auf iso-8859-1 setzen und vorher die html entities mit dem entsprechenden Zeichen ersetzen.
Mit einer aktuellen Perl Version kannst du auch direkt alles ordentlich mit unicode machen, dann sollte auch der printf Syntax ordentlich funktionieren.

http://search.cpan.org/~gaas/HTML-Parse ... ntities.pm dürfte eventuell interessant sein.

suntzu
RSAC
Posts: 698
Joined: 2002-12-20 19:47
Location: Mönchengladbach

Re: Perl-Skript und HTML-Entities

Post by suntzu » 2008-08-27 23:44

Cube wrote:Ich möchte keine HTML-Tabelle nutzen, weshalb ich die Tabelle mit einem <pre>-Tag umrahme und als HTML-Mail verschicke.

Wieso HTML nicht nutzen wollen, nur um es dann doch zu nutzen?

Anonymous

Re: Perl-Skript und HTML-Entities

Post by Anonymous » 2008-08-30 00:12

Danke Freddy36, dein Link hat mich auf die richtige Idee gebracht. Ich wende einfach zuerst decode_entities() auf den String an und erst dann printf().

Wieso HTML nicht nutzen wollen, nur um es dann doch zu nutzen?

Es geht mir nicht darum HTML zu vermeiden. Ich will einfach keine HTML-Tabelle einsetzen, weil diese in meinem Fall viel unübersichtlicher wirkt.