40 0 =>
'=00', 1 =>
'=01', 2 =>
'=02', 3 =>
'=03', 4 =>
'=04',
41 5 =>
'=05', 6 =>
'=06', 7 =>
'=07', 8 =>
'=08', 9 =>
'=09',
42 10 =>
'=0A', 11 =>
'=0B', 12 =>
'=0C', 13 =>
'=0D', 14 =>
'=0E',
43 15 =>
'=0F', 16 =>
'=10', 17 =>
'=11', 18 =>
'=12', 19 =>
'=13',
44 20 =>
'=14', 21 =>
'=15', 22 =>
'=16', 23 =>
'=17', 24 =>
'=18',
45 25 =>
'=19', 26 =>
'=1A', 27 =>
'=1B', 28 =>
'=1C', 29 =>
'=1D',
46 30 =>
'=1E', 31 =>
'=1F', 32 =>
'=20', 33 =>
'=21', 34 =>
'=22',
47 35 =>
'=23', 36 =>
'=24', 37 =>
'=25', 38 =>
'=26', 39 =>
'=27',
48 40 =>
'=28', 41 =>
'=29', 42 =>
'=2A', 43 =>
'=2B', 44 =>
'=2C',
49 45 =>
'=2D', 46 =>
'=2E', 47 =>
'=2F', 48 =>
'=30', 49 =>
'=31',
50 50 =>
'=32', 51 =>
'=33', 52 =>
'=34', 53 =>
'=35', 54 =>
'=36',
51 55 =>
'=37', 56 =>
'=38', 57 =>
'=39', 58 =>
'=3A', 59 =>
'=3B',
52 60 =>
'=3C', 61 =>
'=3D', 62 =>
'=3E', 63 =>
'=3F', 64 =>
'=40',
53 65 =>
'=41', 66 =>
'=42', 67 =>
'=43', 68 =>
'=44', 69 =>
'=45',
54 70 =>
'=46', 71 =>
'=47', 72 =>
'=48', 73 =>
'=49', 74 =>
'=4A',
55 75 =>
'=4B', 76 =>
'=4C', 77 =>
'=4D', 78 =>
'=4E', 79 =>
'=4F',
56 80 =>
'=50', 81 =>
'=51', 82 =>
'=52', 83 =>
'=53', 84 =>
'=54',
57 85 =>
'=55', 86 =>
'=56', 87 =>
'=57', 88 =>
'=58', 89 =>
'=59',
58 90 =>
'=5A', 91 =>
'=5B', 92 =>
'=5C', 93 =>
'=5D', 94 =>
'=5E',
59 95 =>
'=5F', 96 =>
'=60', 97 =>
'=61', 98 =>
'=62', 99 =>
'=63',
60 100 =>
'=64', 101 =>
'=65', 102 =>
'=66', 103 =>
'=67', 104 =>
'=68',
61 105 =>
'=69', 106 =>
'=6A', 107 =>
'=6B', 108 =>
'=6C', 109 =>
'=6D',
62 110 =>
'=6E', 111 =>
'=6F', 112 =>
'=70', 113 =>
'=71', 114 =>
'=72',
63 115 =>
'=73', 116 =>
'=74', 117 =>
'=75', 118 =>
'=76', 119 =>
'=77',
64 120 =>
'=78', 121 =>
'=79', 122 =>
'=7A', 123 =>
'=7B', 124 =>
'=7C',
65 125 =>
'=7D', 126 =>
'=7E', 127 =>
'=7F', 128 =>
'=80', 129 =>
'=81',
66 130 =>
'=82', 131 =>
'=83', 132 =>
'=84', 133 =>
'=85', 134 =>
'=86',
67 135 =>
'=87', 136 =>
'=88', 137 =>
'=89', 138 =>
'=8A', 139 =>
'=8B',
68 140 =>
'=8C', 141 =>
'=8D', 142 =>
'=8E', 143 =>
'=8F', 144 =>
'=90',
69 145 =>
'=91', 146 =>
'=92', 147 =>
'=93', 148 =>
'=94', 149 =>
'=95',
70 150 =>
'=96', 151 =>
'=97', 152 =>
'=98', 153 =>
'=99', 154 =>
'=9A',
71 155 =>
'=9B', 156 =>
'=9C', 157 =>
'=9D', 158 =>
'=9E', 159 =>
'=9F',
72 160 =>
'=A0', 161 =>
'=A1', 162 =>
'=A2', 163 =>
'=A3', 164 =>
'=A4',
73 165 =>
'=A5', 166 =>
'=A6', 167 =>
'=A7', 168 =>
'=A8', 169 =>
'=A9',
74 170 =>
'=AA', 171 =>
'=AB', 172 =>
'=AC', 173 =>
'=AD', 174 =>
'=AE',
75 175 =>
'=AF', 176 =>
'=B0', 177 =>
'=B1', 178 =>
'=B2', 179 =>
'=B3',
76 180 =>
'=B4', 181 =>
'=B5', 182 =>
'=B6', 183 =>
'=B7', 184 =>
'=B8',
77 185 =>
'=B9', 186 =>
'=BA', 187 =>
'=BB', 188 =>
'=BC', 189 =>
'=BD',
78 190 =>
'=BE', 191 =>
'=BF', 192 =>
'=C0', 193 =>
'=C1', 194 =>
'=C2',
79 195 =>
'=C3', 196 =>
'=C4', 197 =>
'=C5', 198 =>
'=C6', 199 =>
'=C7',
80 200 =>
'=C8', 201 =>
'=C9', 202 =>
'=CA', 203 =>
'=CB', 204 =>
'=CC',
81 205 =>
'=CD', 206 =>
'=CE', 207 =>
'=CF', 208 =>
'=D0', 209 =>
'=D1',
82 210 =>
'=D2', 211 =>
'=D3', 212 =>
'=D4', 213 =>
'=D5', 214 =>
'=D6',
83 215 =>
'=D7', 216 =>
'=D8', 217 =>
'=D9', 218 =>
'=DA', 219 =>
'=DB',
84 220 =>
'=DC', 221 =>
'=DD', 222 =>
'=DE', 223 =>
'=DF', 224 =>
'=E0',
85 225 =>
'=E1', 226 =>
'=E2', 227 =>
'=E3', 228 =>
'=E4', 229 =>
'=E5',
86 230 =>
'=E6', 231 =>
'=E7', 232 =>
'=E8', 233 =>
'=E9', 234 =>
'=EA',
87 235 =>
'=EB', 236 =>
'=EC', 237 =>
'=ED', 238 =>
'=EE', 239 =>
'=EF',
88 240 =>
'=F0', 241 =>
'=F1', 242 =>
'=F2', 243 =>
'=F3', 244 =>
'=F4',
89 245 =>
'=F5', 246 =>
'=F6', 247 =>
'=F7', 248 =>
'=F8', 249 =>
'=F9',
90 250 =>
'=FA', 251 =>
'=FB', 252 =>
'=FC', 253 =>
'=FD', 254 =>
'=FE',
111 $this->_charStream = $charStream;
118 $this->_filter = $filter;
123 return array(
'_charStream',
'_filter');
138 return get_class($this);
143 foreach (array_merge(
144 array(0x09, 0x20), range(0x21, 0x3C), range(0x3E, 0x7E)) as $byte) {
145 $this->_safeMap[$byte] = chr($byte);
162 public function encodeString($string, $firstLineOffset = 0, $maxLineLength = 0)
164 if ($maxLineLength > 76 || $maxLineLength <= 0) {
168 $thisLineLength = $maxLineLength - $firstLineOffset;
173 $currentLine = &$lines[$lNo++];
174 $size = $lineLen = 0;
176 $this->_charStream->flushContents();
177 $this->_charStream->importString($string);
184 if (isset($this->_filter)) {
186 while ($this->_filter->shouldBuffer($bytes)) {
192 foreach ($moreBytes as $b) {
197 $bytes = $this->_filter->filter($bytes);
201 if ($currentLine && $lineLen + $size >= $thisLineLength) {
203 $currentLine = &$lines[$lNo++];
204 $thisLineLength = $maxLineLength;
208 $currentLine .= $enc;
221 $this->_charStream->setCharacterSet($charset);
236 foreach ($bytes as $b) {
237 if (isset($this->_safeMap[$b])) {
238 $ret .= $this->_safeMap[$b];
241 $ret .= self::$_qpMap[$b];
258 return $this->_charStream->readBytes($size);
270 $string = str_replace(array(
"\t=0D=0A",
' =0D=0A',
'=0D=0A'),
271 array(
"=09\r\n",
"=20\r\n",
"\r\n"), $string
273 switch ($end = ord(substr($string, -1))) {
276 $string = substr_replace($string, self::$_qpMap[$end], -1);