MimeLiteralPart extends LiteralPart
Represents a single mime header part token, with the possibility of it being MIME-Encoded as per RFC-2047.
MimeLiteralPart automatically decodes the value if it's encoded.
Tags
Table of Contents
- MIME_PART_PATTERN = '=\?[^?=]+\?[QBqb]\?[^\?]+\?='
 - MIME_PART_PATTERN_NO_QUOTES = '=\?[^\?=]+\?[QBqb]\?[^\?"]+\?='
 - $canIgnoreSpacesAfter : bool
 - $canIgnoreSpacesBefore : bool
 - $charsetConverter : MbWrapper
 - $languages : array<string|int, mixed>
 - $value : string
 - __construct() : mixed
 - Decoding the passed token value if it's mime-encoded and assigns the decoded value to a member variable. Sets canIgnoreSpacesBefore and canIgnoreSpacesAfter.
 - __toString() : string
 - Returns the value of the part (which is a string).
 - getLanguageArray() : array<string|int, array<string|int, string>>
 - Returns an array of parts mapped to languages in the header value, for instance the string:
 - getValue() : string
 - Returns the part's value.
 - ignoreSpacesAfter() : bool
 - Returns true if spaces before this part should be ignored.
 - ignoreSpacesBefore() : bool
 - Returns true if spaces before this part should be ignored.
 - addToLanguage() : mixed
 - Adds the passed part into the languages array with the given language.
 - convertEncoding() : string
 - Ensures the encoding of the passed string is set to UTF-8.
 - decodeMime() : string
 - Finds and replaces mime parts with their values.
 - decodeMatchedEntity() : string
 - Decodes a matched mime entity part into a string and returns it, after adding the string into the languages array.
 - decodeSplitPart() : string
 - Decodes a single mime-encoded entity.
 
Constants
MIME_PART_PATTERN
    public
    string
    MIME_PART_PATTERN
    = '=\?[^?=]+\?[QBqb]\?[^\?]+\?='
        
    
MIME_PART_PATTERN_NO_QUOTES
    public
    string
    MIME_PART_PATTERN_NO_QUOTES
    = '=\?[^\?=]+\?[QBqb]\?[^\?"]+\?='
        
    
Properties
$canIgnoreSpacesAfter
    protected
        bool
    $canIgnoreSpacesAfter
     = false
        
    
$canIgnoreSpacesBefore
    protected
        bool
    $canIgnoreSpacesBefore
     = false
        
    
$charsetConverter
    protected
        MbWrapper
    $charsetConverter
    
        
    
$languages
    protected
        array<string|int, mixed>
    $languages
     = []
        
    
$value
    protected
        string
    $value
    
        
    
Methods
__construct()
Decoding the passed token value if it's mime-encoded and assigns the decoded value to a member variable. Sets canIgnoreSpacesBefore and canIgnoreSpacesAfter.
    public
                __construct(MbWrapper $charsetConverter, string $token) : mixed
        
        Parameters
- $charsetConverter : MbWrapper
 - $token : string
 
Return values
mixed —__toString()
Returns the value of the part (which is a string).
    public
                __toString() : string
        
    
    
        Return values
string —the value
getLanguageArray()
Returns an array of parts mapped to languages in the header value, for instance the string:
    public
                getLanguageArray() : array<string|int, array<string|int, string>>
        'Hello and =?UTF-8fr-be?Q?bonjour_?= =?UTF-8it?Q?mi amici?=. Welcome!'
Would be mapped in the returned array as follows:
[
    0 => [ 'lang' => null, 'value' => 'Hello and ' ],
    1 => [ 'lang' => 'fr-be', 'value' => 'bonjour ' ],
    3 => [ 'lang' => 'it', 'value' => 'mi amici' ],
    4 => [ 'lang' => null, 'value' => ' Welcome!' ]
]
Return values
array<string|int, array<string|int, string>> —getValue()
Returns the part's value.
    public
                getValue() : string
        
    
    
        Return values
string —the value of the part
ignoreSpacesAfter()
Returns true if spaces before this part should be ignored.
    public
                ignoreSpacesAfter() : bool
        Overridden to return $this->canIgnoreSpacesAfter which is setup in the constructor.
Return values
bool —ignoreSpacesBefore()
Returns true if spaces before this part should be ignored.
    public
                ignoreSpacesBefore() : bool
        Overridden to return $this->canIgnoreSpacesBefore which is setup in the constructor.
Return values
bool —addToLanguage()
Adds the passed part into the languages array with the given language.
    protected
                addToLanguage(string $part[, string|null $language = null ]) : mixed
        
        Parameters
- $part : string
 - $language : string|null = null
 
Return values
mixed —convertEncoding()
Ensures the encoding of the passed string is set to UTF-8.
    protected
                convertEncoding(string $str[, string $from = 'ISO-8859-1' ][, bool $force = false ]) : string
        The method does nothing if the passed $from charset is UTF-8 already, or if $force is set to false and mb_check_encoding for $str returns true for 'UTF-8'.
Parameters
- $str : string
 - $from : string = 'ISO-8859-1'
 - $force : bool = false
 
Return values
string —utf-8 string
decodeMime()
Finds and replaces mime parts with their values.
    protected
                decodeMime(string $value) : string
        The method splits the token value into an array on mime-part-patterns, either replacing a mime part with its value by calling iconv_mime_decode or converts the encoding on the text part by calling convertEncoding.
Parameters
- $value : string
 
Return values
string —decodeMatchedEntity()
Decodes a matched mime entity part into a string and returns it, after adding the string into the languages array.
    private
                decodeMatchedEntity(array<string|int, string> $matches) : string
        
        Parameters
- $matches : array<string|int, string>
 
Return values
string —decodeSplitPart()
Decodes a single mime-encoded entity.
    private
                decodeSplitPart(string $entity) : string
        Unfortunately, mb_decode_header fails for many charsets on PHP 5.4 and PHP 5.5 (even if they're listed as supported). iconv_mime_decode doesn't support all charsets.
Parsing out the charset and body of the encoded entity seems to be the way to go to support the most charsets.
Parameters
- $entity : string