Если вы не хотите (или по какой-то причине не разрешаете) использовать библиотеки, вы можете использовать стандартные функции php printf
/ sprintf
.
Проблема с ними в том, что если у вас есть значения с переменной и неограниченной шириной, вам придется решить, будут ли длинные значения усечены или нарушит макет таблицы.
Первый случай:
// fixed width
$mask = "|%5.5s |%-30.30s | x |\n";
printf($mask, 'Num', 'Title');
printf($mask, '1', 'A value that fits the cell');
printf($mask, '2', 'A too long value the end of which will be cut off');
Вывод
| Num |Title | x |
| 1 |A value that fits the cell | x |
| 2 |A too long value the end of wh | x |
Второй случай:
// only min-width of cells is set
$mask = "|%5s |%-30s | x |\n";
printf($mask, 'Num', 'Title');
printf($mask, '1', 'A value that fits the cell');
printf($mask, '2', 'A too long value that will brake the table');
И здесь мы получим
| Num |Title | x |
| 1 |A value that fits the cell | x |
| 2 |A too long value that will brake the table | x |
Если ни то, ни другое не удовлетворяетваши потребности и вам действительно нужна таблица с текущими столбцами ширины, чем вы должны рассчитать максимальную ширину значений в каждом столбце.Но именно так PEAR::Console_Table
точно работает.