Mailinglisten-Archive |
Laura Reising wrote:
> Gegeben sei der String:
> "=?iso-8859-1?Q?M=FC=DFiggang?= ist aller Laster Anfang"
eMail-Header erlauben nur 7bit-ASCII-Zeichen, deshalb müssen z.B.
deutsche Umlaute irgendwie 'verpackt' werden.
wie das zu geschehen hat definiert RFC2047
Kurzfassung: Wörter mit Sonderzeichen werden gekapselt in einem
String, der mit '=?' beginnt und mit '?=' endet, dazwischen stehen
3 durch '?' getrennte Felder
diese enthalten:
- den verwendeten Zeichensatz, hier iso-8859-1 bzw. Latin1
- die Codierung: 'B' für binär, 'Q' für 'quoted printable'
empfohlen wird die Benutzung der Variante, die das kürzere
Ergebnis liefert, praktisch hat 'B' aber im europäisch-
amerikanischen Sprachraum keine Bedeutung (anders sieht das
z.B. in Asien aus)
- den eigentlichen codierten text
> Ich möchte (welch Wunder!):
> "Müßiggang ist aller Laster Anfang"
> daraus machen.
> Gibt es eine Art Funktion ISO_8859_Q_decode() ?
es gibt zum einen imap_mime_header_decode() in den imap extensions
diese Funktion sollte mit allen Zeichensätzen, nicht nur mit ISO-8859
klarkommen
(verfügbar in PHP4 und im PHP3 snapshot, allerdings nicht in 3.0.16)
> Oder hat jemand schonmal sowas gebastelt (will keinen Code klauen -
> vielleicht nur Anregungen) ?
oder Q&D, aber normalerweise ausreichend:
function rfc2047_decode($text)
{
$text = str_replace("_"," ",$text);
return
quoted_printable_decode(
ereg_replace("=\?iso-8859-[1234567890]*\?Q\?([^\?]*)\?=","\\1"
,$text));
}
--
Hartmut Holzgraefe hartmut_(at)_six.de http://www.six.de
php::bar PHP Wiki - Listenarchive