protected function wordwrap($str, $width, $break, $cut = false)
{
if (!$cut) {
$regexp = '#^(?:[\\x00-\\x7F]|[\\xC0-\\xFF][\\x80-\\xBF]+){1,' . $width . '}\\b#';
} else {
$regexp = '#^(?:[\\x00-\\x7F]|[\\xC0-\\xFF][\\x80-\\xBF]+){' . $width . '}#';
}
$return = '';
while (preg_match($regexp, $str, $matches)) {
$string = $matches[0];
$str = ltrim(substr($str, strlen($string)));
if (!$cut && isset($str[0]) && in_array($str[0], array('.', '!', ';', ':', '?', ','))) {
$string .= $str[0];
$str = ltrim(substr($str, 1));
}
$return .= $string . $break;
}
return $return . ltrim($str);
}