PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Konvertierung von iso-8859-1 in Klartext...



elrond
25-04-2005, 17:02
Hallo,

ich bin gerade dabei eine Objektklasse zu schreiben, die mir eingehende Mails auseinandernimmt. Das Ganze funxt soweit auch gut. Die Mailanhänge lege ich im Dateisystem mit den Original-Dateinamen ab. Nun finden sich allerdings immer wieder Leute, die Dateien durch die Gegend mailen, deren Dateiname eben Sonderzeichen enthalten.

Der MailClient codiert diesen Dateinamen, und macht dann das hier draus


=?iso-8859-1?Q?AbrPeriode=5Fabschlie=DFen=2ETXT?=
so sollte es aussehen:


AbrPer_abschließen.TXT

Bevor ich die Decodierung selbst mache, frage ich euch: Kennt Ihr vielleicht eine schon eingebaute Funktion dafür?
Für Tipps bin ich dankbar!

undefined
25-04-2005, 17:05
Hier ein Ausschnitt einer meiner Klassen, ist jetzt nicht das was du brauchst aber die Funktionen sind vorhanden, den Rest kannst du ja selbst ableiten ;)

/**
* @short String Convert to UTF-8
* @param [String] @b $in
* @param [Boolean] @b $b Switch(htmlentities = false htmlspecialchars = true)
* @return @b String
*/
function bf_quoteUTF( $in, $b = false )
{
if ( ! is_string( $in ) )
return false;

$in = stripslashes( $in );

/** NOTE: UTF-8 does not work in html_entity_decode! */
$str = utf8_encode( utf8_decode( $in ) );
if ( strcasecmp( $str, $in ) )
$in = utf8_decode( $in );

$c = array( 'ISO-8859-1', 'ISO-8859-15', 'cp1251', 'cp1252' );
if ( $b ) {
/** NOTE: PHP5 only ;) */
if ( function_exists( 'htmlspecialchars_decode' ) ) {
foreach ( $c AS $v ) {
$in = htmlspecialchars_decode( $in, ENT_QUOTES, $v );
}
}
return htmlspecialchars( $in, ENT_QUOTES, 'UTF-8' );

} else {
if ( function_exists( 'html_entity_decode' ) ) {
foreach ( $c AS $v ) {
$in = html_entity_decode( $in, ENT_QUOTES, $v );
}
}
return htmlentities( $in, ENT_QUOTES, 'UTF-8' );
}
}

elrond
25-04-2005, 17:15
Hossa, Spitzen Antwortzeit ! Respekt!! :D Lob und Anerkennung !

Leider ist die Funktion htmlspecialchars_decode nicht in der 5.0.3 enthalten.
php.ne sagt dazu " (no version information, might be only in CVS)"... :cool:

Im Ernstfall muss ich dann wohl doch selbst machen...

undefined
25-04-2005, 17:25
Die Fehler Meldung ist nicht ganz richtig, htmlspecialchars_decode() Decode kennt nur einen Parameter und kein ENT_QUOTES, erst ab der CVS kommen die zwei anderen Parameter hinzu ;)