|
|
<?php |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
namespace Eluceo\iCal\Util; |
|
|
|
|
|
class ComponentUtil |
|
|
{ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public static function fold($string) |
|
|
{ |
|
|
$lines = []; |
|
|
|
|
|
if (function_exists('mb_strcut')) { |
|
|
while (strlen($string) > 0) { |
|
|
if (strlen($string) > 75) { |
|
|
$lines[] = mb_strcut($string, 0, 75, 'utf-8'); |
|
|
$string = ' ' . mb_strcut($string, 75, strlen($string), 'utf-8'); |
|
|
} else { |
|
|
$lines[] = $string; |
|
|
$string = ''; |
|
|
break; |
|
|
} |
|
|
} |
|
|
} else { |
|
|
$array = preg_split('/(?<!^)(?!$)/u', $string); |
|
|
$line = ''; |
|
|
$lineNo = 0; |
|
|
foreach ($array as $char) { |
|
|
$charLen = strlen($char); |
|
|
$lineLen = strlen($line); |
|
|
if ($lineLen + $charLen > 75) { |
|
|
$line = ' ' . $char; |
|
|
++$lineNo; |
|
|
} else { |
|
|
$line .= $char; |
|
|
} |
|
|
$lines[$lineNo] = $line; |
|
|
} |
|
|
} |
|
|
|
|
|
return $lines; |
|
|
} |
|
|
} |
|
|
|