Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. QpContentEncoder.php

class QpContentEncoder

@author Lars Strojny

Hierarchy

  • class \Symfony\Component\Mime\Encoder\QpContentEncoder implements \Symfony\Component\Mime\Encoder\ContentEncoderInterface

Expanded class hierarchy of QpContentEncoder

1 file declares its use of QpContentEncoder
TextPart.php in vendor/symfony/mime/Part/TextPart.php

File

vendor/symfony/mime/Encoder/QpContentEncoder.php, line 17

Namespace

Symfony\Component\Mime\Encoder
View source
final class QpContentEncoder implements ContentEncoderInterface {
    public function encodeByteStream($stream, int $maxLineLength = 0) : iterable {
        if (!\is_resource($stream)) {
            throw new \TypeError(\sprintf('Method "%s" takes a stream as a first argument.', __METHOD__));
        }
        // we don't use PHP stream filters here as the content should be small enough
        (yield $this->encodeString(stream_get_contents($stream), 'utf-8', 0, $maxLineLength));
    }
    public function getName() : string {
        return 'quoted-printable';
    }
    public function encodeString(string $string, ?string $charset = 'utf-8', int $firstLineOffset = 0, int $maxLineLength = 0) : string {
        return $this->standardize(quoted_printable_encode($string));
    }
    
    /**
     * Make sure CRLF is correct and HT/SPACE are in valid places.
     */
    private function standardize(string $string) : string {
        // transform CR or LF to CRLF
        $string = preg_replace('~=0D(?!=0A)|(?<!=0D)=0A~', '=0D=0A', $string);
        // transform =0D=0A to CRLF
        $string = str_replace([
            "\t=0D=0A",
            ' =0D=0A',
            '=0D=0A',
        ], [
            "=09\r\n",
            "=20\r\n",
            "\r\n",
        ], $string);
        return match (\ord(substr($string, -1))) {    0x9 => substr_replace($string, '=09', -1),
            0x20 => substr_replace($string, '=20', -1),
            default => $string,
        
        };
    }

}

Members

Title Sort descending Modifiers Object type Summary Overriden Title
QpContentEncoder::encodeByteStream public function Encodes the stream to a Generator. Overrides ContentEncoderInterface::encodeByteStream
QpContentEncoder::encodeString public function Encode a given string to produce an encoded string. Overrides EncoderInterface::encodeString
QpContentEncoder::getName public function Gets the MIME name of this content encoding scheme. Overrides ContentEncoderInterface::getName
QpContentEncoder::standardize private function Make sure CRLF is correct and HT/SPACE are in valid places.
RSS feed
Powered by Drupal