imap_qprint

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

imap_qprint将引号可打印字符串转换为 8 位字符串

描述

imap_qprint(string $string): string|false

根据 » RFC2045 第 6.7 节,将引号可打印字符串转换为 8 位字符串。

参数

string

引号可打印字符串

返回值

返回 8 位字符串,或在失败时返回 false

参见

  • imap_8bit() - 将 8 位字符串转换为引号可打印字符串

添加备注

用户贡献的笔记 4 个笔记

bernard at bmpsystems dot com
24 年前
此函数似乎存在一个错误,当引号可打印字符串包含一个“=”而没有字符的十六进制代码时。
我使用的是常规的 quoted_printable_decode 代替。
tonitester at gmx dot net
17 年前
如果您无法访问 imap_qprint 函数,并且需要对通过邮件接收的 URL 解码和引号可打印字符串进行编码,请尝试使用此简单函数。但是,如果您没有收到 URL 解码数据并且字符串不包含“=”,您最好使用 https://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;
wese at gmx dot at
15 年前
我刚刚使用正则表达式去掉了循环。

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

感谢分享!
bletous at yahoo dot fr
18 年前
一些邮件使用错误的引号可打印格式进行编码
我使用此函数来解码 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