Как собрать элементы после explode в зависимости от длины

usascha

Новичок
Как собрать элементы после explode в зависимости от длины

Есть строка состоящая из неопределенного количества слов.
Надо разделить ее на две части первая из которых длиной не более 40 символов.

PHP:
		if (strlen($name) >40) {
			$names = explode(" ", $name);
		}
		for ($n=0; $n<= count($names); $n++) {
			if (strlen($names[$n]) < 35) 
				$name1 .= " ".$names[$n];
			else
				$name2 .= " ".$names[$n];
		}
Написал этот код, но он не работает как надо.
Основаная проблема в том чтобы проверить длину $name1 и перейти к $name2.
 

SelenIT

IT-лунатик :)
Что-то вроде этого?
PHP:
if (strlen($name) >40) {
    $names = explode(" ", $name);
    $name1 = '';
    while (strlen($name1) + strlen($names[0]) + 1 < 40) {
        $name1 .= ' ' . array_shift($names);
    }
    $name2 = implode(' ', $names);
}
P.S. Не удобнее ли взять за основу wordwrap?
 

Wicked

Новичок
извращенцы :)
PHP:
$split_pos = strrpos($name, " ", - strlen($name) + 40);
if ($split_pos !== false) {
  $name1 = substr($name, 0, $split_pos);
  $name2 = substr($name, $split_pos + 1);
}
 

usascha

Новичок
Большое человеческое спасибо.
Как говорили умные в древности: учите матчасть. Вот и я пошел про функции читать. Их там великое множество. Блин.
 
Сверху