PHPMailer\PHPMailer
PHPMailer::base64EncodeWrapMB
Encode and wrap long multibyte strings for mail headers without breaking lines within a character. Adapted from a function by paravoid.
Метод класса: PHPMailer{}
Хуков нет.
Возвращает
Строку.
Использование
$PHPMailer = new PHPMailer(); $PHPMailer->base64EncodeWrapMB( $str, $linebreak );
- $str(строка) (обязательный)
- multi-byte text to wrap encode.
- $linebreak(строка)
- string to use as linefeed/end-of-line.
По умолчанию:null
Заметки
Код PHPMailer::base64EncodeWrapMB() PHPMailer::base64EncodeWrapMB WP 6.9.4
public function base64EncodeWrapMB($str, $linebreak = null)
{
$start = '=?' . $this->CharSet . '?B?';
$end = '?=';
$encoded = '';
if (null === $linebreak) {
$linebreak = static::$LE;
}
$mb_length = mb_strlen($str, $this->CharSet);
//Each line must have length <= 75, including $start and $end
$length = 75 - strlen($start) - strlen($end);
//Average multi-byte ratio
$ratio = $mb_length / strlen($str);
//Base64 has a 4:3 ratio
$avgLength = floor($length * $ratio * .75);
$offset = 0;
for ($i = 0; $i < $mb_length; $i += $offset) {
$lookBack = 0;
do {
$offset = $avgLength - $lookBack;
$chunk = mb_substr($str, $i, $offset, $this->CharSet);
$chunk = base64_encode($chunk);
++$lookBack;
} while (strlen($chunk) > $length);
$encoded .= $chunk . $linebreak;
}
//Chomp the last linefeed
return substr($encoded, 0, -strlen($linebreak));
}