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