Цитата:
Оригинал написал(а) kompadre
Покажи альтернативу, напиши функцию врапа со всеми постулатами.
|
Легко:

PHP код:
<?php
define('MAX_WORD_LEN',21);
define('MAX_PART_LEN',15);
define('MIN_PART_LEN',4);
function split_long_words($text) {
return preg_replace_callback('/([^ \t\r\n-]{'.MAX_WORD_LEN.',})/','_split_long_word',$text);
}
function _split_long_word($matched) {
$word = $matched[1];
$temp = '';
$charsLeft = strlen($word);
$offset = 0;
while ($charsLeft>0) {
if ($charsLeft>MAX_PART_LEN)
if ($charsLeft-MAX_PART_LEN>=MIN_PART_LEN)
$partLen = MAX_PART_LEN;
else
$partLen = $charsLeft-MIN_PART_LEN;
else
$partLen = $charsLeft;
$temp .= ' '.substr($word,$offset,$partLen);
$offset += $partLen;
$charsLeft -= $partLen;
}
return substr($temp,1);
}
$text = "дизоксирибонуклеиновая кислота";
$text1 = split_long_words($text);
echo "\n--------------\n$text1";
$text2 = wordwrap($text,MAX_WORD_LEN," ",1);
echo "\n--------------\n$text2";
?>
Выдача:

Код:
--------------
дизоксирибонукл еиновая кислота
--------------
дизоксирибонуклеинова я кислота
Отрыв одиночной буквы -- однозначно хуже, чем оторвать фрагмент заметного размера.
Далее: за 10 минут можно научить скрипт находить сравнительно удобные места для резки, чтобы результат меньше царапал ухо. Но обычно сие не требуется.