$target) { $cut = strrpos(substr($sentence, 0, $target), ' '); if ($cut === false || $cut === 0) { $cut = $target; // no whitespace to cut at — raw cut } $head = trim(substr($sentence, 0, $cut)); if ($buffer !== '') { $pieces[] = $buffer; $buffer = ''; } if ($head !== '') { $pieces[] = $head; } $sentence = trim(substr($sentence, $cut)); } if ($sentence === '') { continue; } if ($buffer === '') { $buffer = $sentence; } elseif (strlen($buffer) + 1 + strlen($sentence) <= $target) { $buffer .= ' ' . $sentence; } else { $pieces[] = $buffer; $buffer = $sentence; } } if ($buffer !== '') { $pieces[] = $buffer; } return $pieces; } /** * Normalise line endings and trim outer whitespace. * * @param string $text * @return string */ private static function normalise($text) { $text = str_replace(array("\r\n", "\r"), "\n", $text); return trim($text); } }