Open Journal Systems  3.3.0
Rfc2231Encoder.php
1 <?php
2 
3 /*
4  * This file is part of the Symfony package.
5  *
6  * (c) Fabien Potencier <fabien@symfony.com>
7  *
8  * For the full copyright and license information, please view the LICENSE
9  * file that was distributed with this source code.
10  */
11 
13 
15 
19 final class Rfc2231Encoder implements EncoderInterface
20 {
24  public function encodeString(string $string, ?string $charset = 'utf-8', int $firstLineOffset = 0, int $maxLineLength = 0): string
25  {
26  $lines = [];
27  $lineCount = 0;
28  $lines[] = '';
29  $currentLine = &$lines[$lineCount++];
30 
31  if (0 >= $maxLineLength) {
32  $maxLineLength = 75;
33  }
34 
35  $charStream = new CharacterStream($string, $charset);
36  $thisLineLength = $maxLineLength - $firstLineOffset;
37 
38  while (null !== $char = $charStream->read(4)) {
39  $encodedChar = rawurlencode($char);
40  if (0 !== \strlen($currentLine) && \strlen($currentLine.$encodedChar) > $thisLineLength) {
41  $lines[] = '';
42  $currentLine = &$lines[$lineCount++];
43  $thisLineLength = $maxLineLength;
44  }
45  $currentLine .= $encodedChar;
46  }
47 
48  return implode("\r\n", $lines);
49  }
50 }
Symfony\Component\Mime\Encoder
Definition: AddressEncoderInterface.php:12
Symfony\Component\Mime\Encoder\EncoderInterface
Definition: EncoderInterface.php:17
Symfony\Component\Mime\Encoder\Rfc2231Encoder\encodeString
encodeString(string $string, ?string $charset='utf-8', int $firstLineOffset=0, int $maxLineLength=0)
Definition: Rfc2231Encoder.php:24
Symfony\Component\Mime\CharacterStream
Definition: CharacterStream.php:20
Symfony\Component\Mime\Encoder\Rfc2231Encoder
Definition: Rfc2231Encoder.php:19