/**
* Sets the character set for this message.
*
* If the content type of this message is a text/* media type, the character
* set in the respective Content-Type header will be updated by this method.
*
* @param string $charset A valid IANA character set identifier
* @return self This message, for method chaining
* @see http://www.iana.org/assignments/character-sets
* @api
*/
public function setCharset($charset)
{
$this->charset = $charset;
if ($this->headers->has('Content-Type')) {
$contentType = $this->headers->get('Content-Type');
if (stripos($contentType, 'text/') === 0) {
$matches = [];
if (preg_match('/(?P<contenttype>.*); ?charset[^;]+(?P<extra>;.*)?/iu', $contentType, $matches)) {
$contentType = $matches['contenttype'];
}
$contentType .= '; charset=' . $this->charset . (isset($matches['extra']) ? $matches['extra'] : '');
$this->setHeader('Content-Type', $contentType, true);
}
}
return $this;
}