替换 MIME 编码电子邮件中的字符
Replacing characters in MIME encoded emails
我正在寻找一种方法来简单地将字符替换为 MIME 编码电子邮件中的 ASCII 对应字符。我在下面编写了初步代码,但似乎我正在使用的 str_replace
命令将永远持续下去以捕获所有可能的组合。有没有更有效的方法来做到这一点?
<?php
$strings = "=?utf-8?Q?UK=20Defence=20=2D=20Yes=2C=20Both=20Labour=20and=20Tory=20Need=20To=20Be=20Very=20Much=20Clearer=20On=20Defence?=";
function decodeString($input){
$space = array("=?utf-8?Q?","=?UTF-8?Q?", "=20","?=");
$hyphen = array("=E2=80=93","=2D");
$dotdotdot = "=E2=80=A6";
$pound = "=C2=A3";
$comma = "=2C";
$decode = str_replace($space, ' ', $input);
$decode = str_replace($hyphen, '-', $decode);
$decode = str_replace($pound, '£', $decode);
$decode = str_replace($comma, ',', $decode);
$decode = str_replace($dotdotdot, '...', $decode);
return $decode;
}
echo decodeString($strings);
?>
我明白了 - 我必须将 $strings
传递给 mb_decode_mimeheader()
函数。
我正在寻找一种方法来简单地将字符替换为 MIME 编码电子邮件中的 ASCII 对应字符。我在下面编写了初步代码,但似乎我正在使用的 str_replace
命令将永远持续下去以捕获所有可能的组合。有没有更有效的方法来做到这一点?
<?php
$strings = "=?utf-8?Q?UK=20Defence=20=2D=20Yes=2C=20Both=20Labour=20and=20Tory=20Need=20To=20Be=20Very=20Much=20Clearer=20On=20Defence?=";
function decodeString($input){
$space = array("=?utf-8?Q?","=?UTF-8?Q?", "=20","?=");
$hyphen = array("=E2=80=93","=2D");
$dotdotdot = "=E2=80=A6";
$pound = "=C2=A3";
$comma = "=2C";
$decode = str_replace($space, ' ', $input);
$decode = str_replace($hyphen, '-', $decode);
$decode = str_replace($pound, '£', $decode);
$decode = str_replace($comma, ',', $decode);
$decode = str_replace($dotdotdot, '...', $decode);
return $decode;
}
echo decodeString($strings);
?>
我明白了 - 我必须将 $strings
传递给 mb_decode_mimeheader()
函数。