Нужен скрипт для "псевдографического" отображения таблиц. То есть мне нужно создать табличку типа Code: ___________________ | | A | B | C | D | ===================== | 1 | | | | | --------------------- | 2 | | | | | --------------------- | 3 | | | | | --------------------- | 4 | | | | | Данные будут задаваться строками, с разделителем | То есть если подать на вход скрипту из текстового файла Code: № |Название | скорость | Процент | 1 |alpha | 700 | 23 | 2 |beta | 2000 | 65 | то должна создаться таблица Code: ___________________________________ | № |Название | скорость | Процент | ==================================== | 1 |alpha | 700 | 23 | ------------------------------------ | 2 |beta | 2000 | 65 | Ширина колонки должна выстраиваться по самому длинному значению. Когда-то видел подобные скрипты и даже проги, но не сохранил Под рукой нет ни мануалов, ни нормального инета, так что желательно подробные примеры давайте если не полностью скрипт ЗЫ знаю что самому мона проставить горизонтальные разделители и пробелы наставлять в ячейках чтоб они все имели одинаковую ширину, но харит меня это дело
PHP: <?php $file = file ( 'filename.txt' ); echo " <table width='100%' heigth='100%' cellpadding='0' cellspacing='0' border='1'> "; foreach ( $file as $string ) { $string = trim ( $string ); $string_array = explode ( "|", $string ); echo " <tr> "; foreach ( $string_array as $column ) { $column = trim ( $column ); if ( $column == '' ) { $column = ' '; } echo " <td> $column </td> "; } echo " </tr> "; } echo " </table> "; ?>
Мда, чтобы без таблиц (<tr><td>...</td></tr>) такой скрипт сделать нужно пару часиков голову поломать. ИМХО, нужно разбивать весь файл построчно в массив как делал hhover, затем каждые элементы строчки разделенные | перенести в отдельные массивы, найти в этих массивах самые длинные элементы(сравнивая значения длины каждого элемента массива полученных через функцию strlen), узнать их длину, потом посчитать сколько символов не хватает остальным элементам этого массива до нужной длины и добавить к ним нужное количество пробелов, и потом наконец вывести это все на экран. Тут циклов до ж**ы получится, темболее что входной текстовый файл наверняка не маленький. И потом, код который писал hhover делает тоже самое, только немного в другом виде.
ant0ha, Можно и попроще... Thanat0z, Не знаю насколько адекватно будет реагировать на ошибки, но в случае валидных входных данных работает исправно: PHP: <?php $main_array = file ( 'filename.txt' ); foreach ( $main_array as $key => $row ) { $row = trim ( $row ); $columns = explode ( "|", $row ); foreach ( $columns as $k => $column ) { $column = trim ( $column ); $table[$key][$k] = $column; $strlen = strlen ( $column ); if ( $strlen > $table['len'][$k] ) { $table['len'][$k] = $strlen; } } } foreach ( $table['len'] as $int ) { $max_len += $int; } $max_len += count ( $table['len'] ) * 3; $max_len += 1; $row_str = str_pad ( '', $max_len, '-' ); echo " <pre> "; echo $row_str; foreach ( $table as $key => $row ) { echo "\r\n"; echo "|"; foreach ( $row as $k => $column ) { $column = str_pad ( $column, $table['len'][$k] ); echo " " . $column . " |"; } echo "\r\n"; echo $row_str; } echo " </pre> "; ?>