раз раз раз разраз разраз разраз разраз разраз разраз разраз разраз разраз разраз разраз разраз разраз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз, раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз раз
два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два два
три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три
три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три три
<?php
//добавляем к тексту пробел в конце, т.к. по пробелам будет делиться текст, без этого последнее слово будет обрезаться
$desc=$sample_text." ";
//2 - на сколько делим, 0.02 - сглаживание (%)
$l=intval(strlen($desc)/2+strlen($desc)*0.02);
//убираем переводы строк
$desc=ereg_replace("[\r\n]"," ",$desc);
//делим текст
preg_match_all("/(.{1,$l})[ \n\r\t]+/",$desc,$descArray);
?>
данный вариант не работает. <?php
$text = 'aaa'.PHP_EOL.'bbbbb'.PHP_EOL.'ccccccc'.PHP_EOL.'dddd'.PHP_EOL.'eeeeeeeeeeeee'.PHP_EOL.'fff';
$length = strlen($text);
$half = (int) ($length / 2);
$part_1 = substr($text,0, $half);
$part_2 = substr($text,$half);
$eol_1 = strrpos( $part_1, PHP_EOL, 0); // last position from string start of first part
$eol_2 = $half + strpos( $part_2, PHP_EOL, 0 ); // first position from string start of second part
$shift_1 = $half - $eol_1; // char shift size till middle point of first block
$shift_2 = $eol_2 - $half; // char shift size till middle point of last block
if($shift_1 < $shift_2){ // PHP_EOL is closer to firts block, so larger size of block saved in second block
$part_1 = substr($text,0,$shift_1);
$part_2 = substr($text,$shift_1);
}else{
$part_1 = substr($text,0,$eol_1);
$part_2 = substr($text,$eol_1);
}
echo '<pre>';
var_dump( array(
'length' => $length,
'middle point' => $half,
'position of EOL of first block' => $eol_1,
'position of EOL of second block' => $half + $eol_2,
) );
var_dump( $part_1, $part_2 );
?>