rendered paste bodyprivate function _decodeHeader($input)
{
// Remove white space between encoded-words
$input = preg_replace('/(=?[^?]+?(Q|B)?[^?]*?=)( |' . "t|" . "\r\n" . ')+=?/', '1=?', $input);
// For each encoded-word...
while (preg_match('/(=?([^?]+)?(Q|B)?([^?]*)?=)/', $input, $matches)) {
$encoded = $matches[1];
$charset = $matches[2];
$encoding = $matches[3];
$text = $matches[4];
switch ($encoding) {
case 'B':
$text = base64_decode($text);
break;
case 'Q':
$text = str_replace('_', ' ', $text);
preg_match_all('/=([A-F0-9]{2})/', $text, $matches);
foreach($matches[1] as $value)
$text = str_replace('='.$value, chr(hexdec($value)), $text);
break;
}
$input = str_replace($encoded, $text, $input);
}
return $input;
}