PHP 8.3.4 Released!

imap_qprint

(PHP 4, PHP 5, PHP 7, PHP 8)

imap_qprint Konvertiert einen quoted-printable-kodierten String in einen 8-Bit-String

Beschreibung

imap_qprint(string $string): string|false

Konvertiert einen quoted-printable String in einen 8-Bit-String gemäß » RFC2045, Abschnitt 6.7.

Parameter-Liste

string

Ein quoted-printable-kodierter String

Rückgabewerte

Gibt einen 8-Bit-String zurück. Bei einem Fehler wird false zurückgegeben.

Siehe auch

  • imap_8bit() - Konvertiert einen 8bit-String in einen quoted-printable String

add a note

User Contributed Notes 4 notes

up
4
bernard at bmpsystems dot com
24 years ago
This function seems to have a bug, when the quoted-printable string contains a "=" without the HEX code of a Character.
I use the regular quoted_printable_decode instead.
up
1
tonitester at gmx dot net
16 years ago
If you don't have access to the imap_qprint function and you have to encode URL Decoded and Quoted Printable Strings you receive by Mail try this simple function. But if you don't receive URL Decoded data and the string doesn't contain an = you better use http://www.php.net/manual/en/function.quoted-printable-decode.php

function decode_qprint($str){
$arr= array("A","B","C","D","E","F");
while (list(, $var) = each($arr)) {
$i=0;
while ($i <=9){
$str=str_replace("=".$var.$i,"%".$var.$i,$str);
$i++;}
$arr2 = array("A","B","C","D","E","F");
while (list(, $val) = each($arr2)) {
$str=str_replace("=".$var.$val,"%".$var.$val,$str);}}
$str = urldecode($str);
$str = utf8_encode($str);
return $str;}

$s2d='=F6=D6=DF=C4=E4=DC=FC=A9=AE';
$2s2d='%F6';

$output = decode_qprint($s2d);
$output2 = decode_qprint($2s2d);

echo $output;
echo $output2;
up
0
wese at gmx dot at
15 years ago
I just got rid of the loops using a regex.

<?php
function decode_qprint($str) {
$str = preg_replace("/\=([A-F][A-F0-9])/","%$1",$str);
$str = urldecode($str);
$str = utf8_encode($str);
return
$str;
}
?>

Thanks for sharing!
up
0
bletous at yahoo dot fr
18 years ago
Some mails are encoded in bad quoted printable format:
I use this function to decode the qprint:

for($i=0;$i<256;$i++)
{
$c1=dechex($i);
if(strlen($c1)==1){$c1="0".$c1;}
$c1="=".$c1;
$myqprinta[]=$c1;
$myqprintb[]=chr($i);
}

function decode($data,$code)
{
if(!$code){return imap_utf7_decode($data);}
if($code==0){return imap_utf7_decode($data);}
if($code==1){return imap_utf8($data);}
if($code==2){return ($data);}
if($code==3){return imap_base64($data);}
if($code==4){return imap_qprint(str_replace($myqprinta,$myqprintb,($data)));}
if($code==5){return ($data);}

}
To Top