Quoted-printable (encode / decode)

Contenu du snippet

Pour encoder ou décoder facilement un texte en 'quoted-printable' (format fréquemment utilisé dans le corp des mail ou posts de newsgroup) , il faut avoir la librairie imap d'installé, ...

voilà deux fonctions qui permettent d'obtenir le même resultat ( conforme au RFC 2045 - http://rfc.net/rfc2045.html )

Source / Exemple :


function QPencode($str)
{
    DEFINE('CRLF', "\r\n");
    
    $lines = preg_split("/\r?\n/", $str);
    $out   = '';
    
    foreach ($lines as $line)
    {
        $newpara = '';
    	
        for ($j = 0; $j <= strlen($line) - 1; $j++)
        {
            $char = substr ( $line, $j, 1 );
            $ascii = ord ( $char );	
            
            if ( $ascii < 32 || $ascii == 61 || $ascii > 126 ) 
            {
                 $char = '=' . strtoupper ( dechex( $ascii ) );
            }
            
            if ( ( strlen ( $newpara ) + strlen ( $char ) ) >= 76 ) 
            {
            	$out .= $newpara . '=' . CRLF;   $newpara = '';
            }
            $newpara .= $char;
        }
        $out .= $newpara . $char;
    }
    return trim ( $out );	
}

function QPdecode( $str )
{
    $out = preg_replace('/=\r?\n/', '', $str);
    $out = preg_replace('/=([A-F0-9]{2})/e', chr( hexdec ('\\1' ) ), $out);
    
    return trim($out);
}

?>

Conclusion :


utilisation :

QPencode('texte');
QPdecode('texte');

voilou, en espérant que ce code va vous servir ;)

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.