diff options
Diffstat (limited to 'vendor/sabre/vobject/lib/Property.php')
-rw-r--r-- | vendor/sabre/vobject/lib/Property.php | 24 |
1 files changed, 11 insertions, 13 deletions
diff --git a/vendor/sabre/vobject/lib/Property.php b/vendor/sabre/vobject/lib/Property.php index 96855f1f7..3d1775fa2 100644 --- a/vendor/sabre/vobject/lib/Property.php +++ b/vendor/sabre/vobject/lib/Property.php @@ -246,20 +246,18 @@ abstract class Property extends Node { $str .= ':' . $this->getRawMimeDirValue(); - $out = ''; - while (strlen($str) > 0) { - if (strlen($str) > 75) { - $part = mb_strcut($str, 0, 75, 'utf-8'); - $out .= $part . "\r\n"; - $str = ' ' . substr($str, strlen($part)); - } else { - $out .= $str . "\r\n"; - $str = ''; - break; - } - } + $str = \preg_replace( + '/( + (?:^.)? # 1 additional byte in first line because of missing single space (see next line) + .{1,74} # max 75 bytes per line (1 byte is used for a single space added after every CRLF) + (?![\x80-\xbf]) # prevent splitting multibyte characters + )/x', + "$1\r\n ", + $str + ); - return $out; + // remove single space after last CRLF + return \substr($str, 0, -1); } |