function centrer($letexte) { return aligner($letexte, 'center'); }
$fieldsbyrow = array(); foreach (explode("\n", $str) as $line) { $fieldsbyrow[] = explode('$', $line); } $maxfields = max(array_map('count', $fieldsbyrow)); foreach (range(0, $maxfields - 1) as $col) { $maxwidth = 0; foreach ($fieldsbyrow as $fields) { $maxwidth = max($maxwidth, strlen($fields[$col])); } foreach ($fieldsbyrow as &$fields) { $fields[$col] = str_pad($fields[$col], $maxwidth, ' ', $justtype); } unset($fields); // see http://bugs.php.net/29992 } $result = ''; foreach ($fieldsbyrow as $fields) { $result .= implode(' ', $fields) . "\n"; } return $result; } $textinfile = 'Given$a$text$file$of$many$lines,$where$fields$within$a$line$ are$delineated$by$a$single$\'dollar\'$character,$write$a$program that$aligns$each$column$of$fields$by$ensuring$that$words$in$each$ column$are$separated$by$at$least$one$space. Further,$allow$for$each$word$in$a$column$to$be$either$left$ justified,$right$justified,$or$center$justified$within$its$column.'; foreach (array('L', 'R', 'C') as $j) { echo aligner($textinfile, $j); }