| @@ -179,8 +179,22 @@ | ||
| 179 | 179 | if ('' !== $encodedToken) { |
| 180 | 180 | $tokens[] = $encodedToken; |
| 181 | 181 | } |
| 182 | 182 | |
| 183 | + foreach ($tokens as $i => $token) { | |
| 184 | + // whitespace(s) between 2 encoded tokens | |
| 185 | + if ( | |
| 186 | + 0 < $i | |
| 187 | + && isset($tokens[$i + 1]) | |
| 188 | + && preg_match('~^[\t ]+$~', $token) | |
| 189 | + && $this->tokenNeedsEncoding($tokens[$i - 1]) | |
| 190 | + && $this->tokenNeedsEncoding($tokens[$i + 1]) | |
| 191 | + ) { | |
| 192 | + $tokens[$i - 1] .= $token.$tokens[$i + 1]; | |
| 193 | + array_splice($tokens, $i, 2); | |
| 194 | + } | |
| 195 | + } | |
| 196 | + | |
| 183 | 197 | return $tokens; |
| 184 | 198 | } |
| 185 | 199 | |
| 186 | 200 | /** |
| @@ -230,9 +244,9 @@ | ||
| 230 | 244 | |
| 231 | 245 | /** |
| 232 | 246 | * Generate a list of all tokens in the final header. |
| 233 | 247 | */ |
| 234 | - protected function toTokens(string $string = null): array | |
| 248 | + protected function toTokens(?string $string = null): array | |
| 235 | 249 | { |
| 236 | 250 | if (null === $string) { |
| 237 | 251 | $string = $this->getBodyAsString(); |
| 238 | 252 | } |