Windows-1252-PayPal-Mails verarbeiten
This commit is contained in:
@@ -15,9 +15,9 @@ declare(strict_types=1);
|
||||
*/
|
||||
|
||||
/**
|
||||
* Wandelt den (ggf. UTF-16-kodierten) Mail-Body in normalisierten UTF-8-Text um:
|
||||
* Skript/Style raus, Tags durch Leerzeichen ersetzt, Entities dekodiert, NBSP
|
||||
* und Mehrfach-Whitespace zusammengefasst.
|
||||
* Wandelt den (ggf. UTF-16- oder Windows-1252-kodierten) Mail-Body in
|
||||
* normalisierten UTF-8-Text um: Skript/Style raus, Tags durch Leerzeichen
|
||||
* ersetzt, Entities dekodiert, NBSP und Mehrfach-Whitespace zusammengefasst.
|
||||
*/
|
||||
function paypal_mail_to_text(string $body): string
|
||||
{
|
||||
@@ -27,6 +27,16 @@ function paypal_mail_to_text(string $body): string
|
||||
if ($converted !== false) {
|
||||
$body = $converted;
|
||||
}
|
||||
} elseif (preg_match('//u', $body) !== 1) {
|
||||
// Outlook/Hotmail kennzeichnet weitergeleitete Nachrichten teils als
|
||||
// UTF-8, liefert den Body aber tatsaechlich in Windows-1252. Dann
|
||||
// schlagen alle folgenden Unicode-Regulaerausdruecke still fehl. Das
|
||||
// Eurozeichen (0x80) ist zugleich ein typisches Erkennungsmerkmal fuer
|
||||
// Windows-1252 statt ISO-8859-1.
|
||||
$converted = @iconv('Windows-1252', 'UTF-8//IGNORE', $body);
|
||||
if ($converted !== false) {
|
||||
$body = $converted;
|
||||
}
|
||||
}
|
||||
|
||||
$body = preg_replace('#<(script|style)[^>]*>.*?</\1>#is', ' ', $body) ?? $body;
|
||||
|
||||
Reference in New Issue
Block a user