Нужно сделать перенос строк (записывать в массив)по пробелу по заданному размеру длины строки.
Пример:
$text = 'Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки. Если вызвана статически, возвращает объект класса DOMDocument или FALSE в случае возникновения ошибки.';
class MyClass {
public $output = array();
public function text($text, $string_length){
print_r($output);
}
}
$obj = new MyClass();
$obj->text($text, 20);
должно получиться:
Array ( [0] => Возвращает TRUE в [1] => случае успешного завершения [2] => или FALSE в случае возникновения [3] => ошибки. Если вызвана статически, [4] => возвращает объект класса DOMDocument [5] => или FALSE в случае возникновения )
Я решил таким путем:
class MyClass {
public $output = array();
public function text($text, $string_length){
$i = 0;
foreach(explode(' ', $text) as $val){
if(!empty($this->output[$i])){
if(iconv_strlen($this->output[$i], 'utf-8') < $string_length){
$this->output[$i] .= $val.' ';
} else {
++$i;
if(isset($this->output[$i])){$this->output[$i] .= $val.' ';}
}
} else {
$this->output[$i] = $val.' ';
}
}
print_r($this->output);
}
}
$obj = new MyClass();
$obj->text($text, 20);
Но результат не верен:
Array ( [0] => Возвращает TRUE в [1] => успешного завершения [2] => FALSE в случае возникновения [3] => Если вызвана статически, [4] => объект класса DOMDocument [5] => FALSE в случае возникновения )
Пропадает начиная с array [1].
Т.е. должно быть: [0] => Возвращает TRUE в [1] =>
СЛУЧАЕ успешного
А слово
СЛУЧАЕ теряется и вместо него вставляется
завершения
Не претендую, что мой алгоритм лучший, но уже перепробовал несколько различных способов и этот вышел ближе всего к истине.