скрипт Plain Text выравнивание по ширине

Ergo

Новичок
скрипт Plain Text выравнивание по ширине

Может кто уже писал подобный скрипт. Суть его. Имеем строку $string без переводов строки длиной этак в 300-500 символов. Необходимо вставить в нее пробелы и переводы строки так, чтобы при выводе на экран в plain-text получалось выравнивание по ширине.
 

DiMA

php.spb.ru
Команда форума
такое можно написать за 30 минут для тех, кто не сможет рег. придумать. С регом наверно будет быстрее.
 

Ergo

Новичок
Автор оригинала: DiMA
такое можно написать за 30 минут для тех, кто не сможет рег. придумать. С регом наверно будет быстрее.
Ну не знаю. Мне почему то в голову ничего не приходит:( В каком направлении хоть двигаться? Я начал так. Разбиваю строку на слова, затем формирую новые строки по 8-12 слов. Мне остается только каким то образом вставить между этими словами пробелы, так чтобы все строки были одинаковые по ширине. Или может быть я двигаюсь в неправильном направлении?
 

DiMA

php.spb.ru
Команда форума
без регов. В цикле:
- берем N байт с текущей позиции вперед
- двигаемся по выделнному куску с его конца к началу, до первого пробела (все лишнее справа отбрасываем)
- сохраняем позицию найденного места
- уничтожаем все проблелы в новом куске
- берем новый кусок и дополняем его пробелами, чтобы довести до N байт по ширине
- вывод на экран
- повтор

С регами:
получем массив из строк со словами, не более N байт (слова не обрезаны). Цикл по этому массиву:
- берем очередной кусок и дополняем его пробелами, чтобы довести до N байт по ширине
- вывод на экран
 

Ergo

Новичок
Автор оригинала: DiMA
- уничтожаем все проблелы в новом куске
Имелось в виду trim()?

Автор оригинала: DiMA
- берем новый кусок и дополняем его пробелами, чтобы довести до N байт по ширине
Все то, что до этого момента, как оказалось можно сделать с помощью wordwrap();
А как довести новый кусок по ширине пробелами? вот в чем вопрос.
 

Сытник

Guest
Автор оригинала: Ergo
Имелось в виду trim()?
Все то, что до этого момента, как оказалось можно сделать с помощью wordwrap();
А как довести новый кусок по ширине пробелами? вот в чем вопрос.
printf()
 

Сытник

Guest
Автор оригинала: Ergo
Хм. Что то я не представлю себе с каким параметром.
Эх... перепечатаю часть главы из Проффесионального PHP программирования...
PHP:
$a_title = "Aaaa";
$a_num = 22;

$b_title = "BbbbbbbbbB";
$b_num = 111;

printf ("%'.-40.40s%'.3d%s", $a_title, $a_num, "<br>\n");
printf ("%'.-40.40s%'.3d%s", $b_title, $b_num, "<br>\n");
 

Ergo

Новичок
Автор оригинала: Сытник
Эх... перепечатаю часть главы из Проффесионального PHP программирования...
PHP:
$a_title = "Aaaa";
$a_num = 22;
$b_title = "BbbbbbbbbB";
$b_num = 111;
printf ("%'.-40.40s%'.3d%s", $a_title, $a_num, "<br>\n");
printf ("%'.-40.40s%'.3d%s", $b_title, $b_num, "<br>\n");
Пришел я единственное к тому, что...

PHP:
<?
$string = "Повестка заседания Совета министров предусматривает также обсуждение проекта программы совместной деятельности по преодолению последствий чернобыльской катастрофы в рамках Союзного государства на 2002-2005 годы. Помимо этого, членам Совета министров предстоит обсудить вопрос об устранении недостатков, выявленных в ходе проверки исполнения бюджета Союза Белоруссии и России за 2002 год и бюджета Союзного государства за 1 полугодие 2001 года. Эти недостатки были выявлены в ходе проверки, проведенной Счетной палатой РФ и комитетом государственного контроля Белоруссии.";
echo "<pre>";
$string = wordwrap($string, 60);
$handle = explode ("\n", $string);
$a = count($handle);
for ($i = 0; $i < $a; $i++) {
	$words = explode (" ", $handle[$i]);
	printf ("%' 60.60s", $handle[$i]);
	echo "\n";
}
echo "</pre><br><br>";
?>
Но по ширине никак не удается выравнять :(
Буду писать код дальше. может и получится
 
Сверху