I’m just going to go ahead and post my solution. I try to encourage people to try before asking for help but almost everything I’ve learned is from reading code.
Here you go:
[php]
$string = “Aliquam volutpat convallis libero in molestie. Donec eleifend est mollis tortor sollicitudin nec bibendum metus eleifend. Nullam tristique placerat nulla, ac ultricies lacus blandit vitae. Nullam pellentesque semper velit sit amet auctor. Curabitur quis erat et neque consectetur tincidunt. Suspendisse non turpis eu tortor consectetur molestie eget sit amet turpis. Vivamus ac tellus eget dolor hendrerit fermentum. Integer accumsan urna bibendum lacus fringilla facilisis. Phasellus arcu eros, ornare sit amet tristique ut, fermentum nec risus. Aenean lobortis molestie magna, ac lobortis tellus fermentum non. Pellentesque imperdiet, lacus ac cursus auctor, turpis ligula posuere nunc, pharetra placerat odio diam non diam. Aenean rhoncus sagittis lorem, non molestie nulla iaculis a. In pharetra purus in velit interdum vestibulum. Aliquam condimentum, mi ac varius convallis, tortor eros varius urna, non tristique eros nulla nec enim. Praesent vel nisl ut odio pretium varius. Phasellus eget mauris augue, viverra posuere ante. Nam ac nunc vitae neque pulvinar fringilla. Praesent at ante libero. Sed tincidunt mollis odio non lacinia. Praesent tincidunt lectus in libero interdum ullamcorper. Vivamus eleifend, enim a tristique vehicula, nunc diam feugiat nulla, non commodo velit quam sed nisl. Phasellus ullamcorper pharetra sapien, non cursus urna porttitor at. Pellentesque condimentum laoreet magna, vitae mollis nibh porttitor a. Vestibulum sit amet risus lorem, vel elementum nibh. Nulla suscipit eros sed magna posuere pharetra id aliquam massa. Sed at dui vel nisi blandit suscipit. Quisque lobortis volutpat mauris non facilisis. Nulla quis massa erat. Quisque vel magna dui, id volutpat leo. Donec sodales ipsum id orci gravida facilisis. Curabitur at turpis a ante feugiat luctus. Phasellus facilisis pharetra venenatis. Phasellus ultricies mattis nisl, et elementum libero varius ut. Sed blandit pharetra bibendum. Nam lobortis dignissim mi, id accumsan elit congue eu. Sed at dui mi. Aliquam congue malesuada metus non luctus. Mauris non tellus eu tellus rhoncus volutpat et pharetra ipsum. Nullam velit sapien, fermentum ac vestibulum eu, auctor non tellus. In placerat pulvinar enim sed rhoncus. Sed vulputate pharetra lorem sit amet tristique. Donec augue erat, sagittis ac aliquam a, ullamcorper at nisi. Morbi iaculis orci eget sem molestie at varius odio semper. Nunc magna justo, porta vel congue tincidunt, congue eget sapien. Morbi feugiat, odio eget sollicitudin pharetra, libero nisi blandit leo, ac vulputate turpis dolor malesuada erat. Proin sit amet nunc vitae metus porta varius eget tincidunt ipsum. Proin eu massa ut risus scelerisque scelerisque vel ac nibh.”;
$target_length = 245; // maximum string length
// split and loop words to create output array
$words = preg_split("/[\s]+/", $string); // split all words by spaces
$key = 0;
$output = array();
foreach($words as $word) {
$output[$key][] = $word; // append word to output array
$length = strlen(implode(" ", $output[$key])); // validate length of current output key
// if length is greater than target length move (pop & shift)
// the last word from the current key to the next key
if ($length > $target_length) {
$pop = array_pop($output[$key]); // pop the last word
$key++; // increment the key
$output[$key][] = $pop; // shift last word to new key
}
}
// implode back to strings
foreach($output as $key => $value) {
$output[$key] = implode(" ", $value);
}
// test the length of each string
echo “
”;
echo “KEY\tLENGTH\tSTATUS\n”;
foreach($output as $key => $value) {
$length = strlen($value);
echo $key . “\t” . $length . “\t” . ($length > $target_length ? “TOO BIG” : “OK”) . “\n”;
}
echo “
”;
[/php]
Example output:
KEY LENGTH STATUS
0 238 OK
1 245 OK
2 241 OK
3 239 OK
4 240 OK
5 245 OK
6 241 OK
7 242 OK
8 243 OK
9 241 OK
10 236 OK
11 36 OK