Antworten auf deine Fragen:
Neues Thema erstellen

Tags aus HTML-Mail gescheit entfernen

netbandit

Aktives Mitglied

Hallo,

hat jemand eine Ahnung wie man Tags und überflüssigen Inhalt dazwischen aus einer reinen HTML-Mail (nonMultipart, kein PLAIN alternativ) entfernen kann? strip_tags alleine bringt mich da nicht weiter, Beispiel:

PHP:
$str='<style type="text/css" media="print">
    body{color: #000;}
    </style>';
echo strip_tags($str);
Ausgabe:

body{color: #000;}
Eigentlich sollte da gar nichts mehr kommen :'(

Einen Lösungsansatz habe ich auf php.net gefunden:

PHP:
echo preg_replace('@<style[^>]*?>.*?</style>@siu', ' ', $str);
Hergeleitet aus dem folgenden Kommentar:

Aber es gibt ja nun, wie man sieht, noch ein paar mehr HTML-Tags wo das was dazwischen ist, gar nicht benötigt wird. Kann mir wer einen Tipp geben oder hat der "matthew" bereits alles abgedeckt?

Grüße :)
 
Zuletzt bearbeitet:

Duddle

Posting-Frequenz: 14µHz

AW: Tags aus HTML-Mail gescheit entfernen

Nicht die hilfreichste der Antworten, aber nur als Hintergrundwissen:

Du wirst mit regulären Ausdrücken hier nicht mehr als 98% (zur Anschauung gewählter Wert) deines HTMLs abdecken können. HTML fällt unter die sog. kontextfreien Sprachen / Typ-2-Sprachen der Chomsky-Hierarchie. Reguläre Ausdrücke können jedoch nur reguläre Sprachen / Typ-3-Sprachen beschreiben.

Praktisch bedeutet das, es ist schlichtweg nicht möglich, alle möglichen HTML-konformen Dokumente mit regulären Ausdrücken vollständig zu verarbeiten. Du müsstest das Dokument als Baum parsen (so wie es dein Browser auch macht), um die einzelnen Knoten korrekt "säubern" zu können - Stichwort DOM.
Alternativ kannst du natürlich auch akzeptieren, dass dein preg_replace niemals 2% der Dokumente korrekt verarbeiten wird :)


Duddle
 

netbandit

Aktives Mitglied

AW: Tags aus HTML-Mail gescheit entfernen

OK, nicht unbedingt das was ich mir erhofft habe, aber recht hast Du ja.

Werde dann vorab die den Inhalt zwischen body und /body auslesen, ganz grob die gängigsten Tags (style, script, etc.) nach obigem Beispiel entfernen und zum Schuss mit strip_tags die Übrigen entfernen. Was dann noch übrig bleibt muss halt manuell entfernt werden. Im Durchschnitt kamen von 100 Nachrichten bisher 1 Nachricht im reinen HTML an, alle anderen sind Text, bzw. enthalten alternativ Text. Da kann man bestimmt mit leben...

Grüße & Danke :)
 
Zuletzt bearbeitet:
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Keine Mitglieder online.

Statistik des Forums

Themen
118.565
Beiträge
1.538.067
Mitglieder
67.488
Neuestes Mitglied
Andrew56524
Oben