00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010 class ConverterMimeHeader implements IConverter {
00011
00012
00013
00014 public function encode($value, $params = false) {
00015 if (!$params) {
00016 $params = GyroLocale::get_charset();
00017 }
00018
00019 $ret = '';
00020 $requires_escaping = false;
00021 $l = strlen($value);
00022
00023 for ($i = 0; $i < $l; $i++) {
00024 $c = ord(substr($value, $i, 1));
00025 if ($c < 0x20 || $c > 0x7E) {
00026 $requires_escaping = true;
00027 break;
00028 }
00029 }
00030 if ($requires_escaping) {
00031
00032 for ($i = 0; $i < $l; $i++) {
00033 $c = ord(substr($value, $i, 1));
00034 if ($c == 0x20) {
00035 $c = '_';
00036 }
00037 elseif (
00038 ($c >= 0x30 && $c <= 0x39) ||
00039 ($c >= 0x41 && $c <= 0x5A) ||
00040 ($c >= 0x61 && $c <= 0x7A)
00041 ) {
00042 $c = chr($c);
00043 }
00044 else {
00045 $c = '=' . strtoupper(dechex($c));
00046 }
00047 $ret .= $c;
00048 }
00049 $ret = '=?' . $params . '?Q?' . $ret . '?=';
00050 }
00051 else {
00052 $ret = $value;
00053 }
00054 return $ret;
00055 }
00056
00057 public function decode($value, $params = false) {
00058 return $value;
00059 }
00060 }