public static function Unicode::mimeHeaderEncode in Drupal 8
Same name and namespace in other branches
- 9 core/lib/Drupal/Component/Utility/Unicode.php \Drupal\Component\Utility\Unicode::mimeHeaderEncode()
Encodes MIME/HTTP headers that contain incorrectly encoded characters.
For example, Unicode::mimeHeaderEncode('tést.txt') returns "=?UTF-8?B?dMOpc3QudHh0?=".
See http://www.rfc-editor.org/rfc/rfc2047.txt for more information.
Notes:
- Only encode strings that contain non-ASCII characters.
- We progressively cut-off a chunk with self::truncateBytes(). This ensures each chunk starts and ends on a character boundary.
- Using \n as the chunk separator may cause problems on some systems and may have to be changed to \r\n or \r.
Parameters
string $string: The header to encode.
bool $shorten: If TRUE, only return the first chunk of a multi-chunk encoded string.
Return value
string The mime-encoded header.
4 calls to Unicode::mimeHeaderEncode()
- file_get_content_headers in core/
modules/ file/ file.module - Examines a file entity and returns appropriate content headers for download.
- Mail::formatDisplayName in core/
lib/ Drupal/ Component/ Utility/ Mail.php - Return a RFC-2822 compliant "display-name" component.
- PhpMail::mail in core/
lib/ Drupal/ Core/ Mail/ Plugin/ Mail/ PhpMail.php - Sends an email message.
- UnicodeTest::testMimeHeaderEncode in core/
tests/ Drupal/ Tests/ Component/ Utility/ UnicodeTest.php - Tests multibyte encoding.
File
- core/
lib/ Drupal/ Component/ Utility/ Unicode.php, line 508
Class
- Unicode
- Provides Unicode-related conversions and operations.
Namespace
Drupal\Component\UtilityCode
public static function mimeHeaderEncode($string, $shorten = FALSE) {
if (preg_match('/[^\\x20-\\x7E]/', $string)) {
// floor((75 - strlen("=?UTF-8?B??=")) * 0.75);
$chunk_size = 47;
$len = strlen($string);
$output = '';
while ($len > 0) {
$chunk = static::truncateBytes($string, $chunk_size);
$output .= ' =?UTF-8?B?' . base64_encode($chunk) . "?=\n";
if ($shorten) {
break;
}
$c = strlen($chunk);
$string = substr($string, $c);
$len -= $c;
}
return trim($output);
}
return $string;
}