function justify($text, $width, $break) {
$marker = "__$%@random#$()__";
// lines is an array of lines containing the word-wrapped text
$wrapped = wordwrap($text, $width, $marker);
$lines = explode($marker, $wrapped);
$result = "";
foreach ($lines as $line_index=>$line) {
$line = trim($line);
$words = explode(" ", $line);
$words = array_map("trim", $words);
$wordcount = count($words);
//$wordlength = strlen(implode("/([^\s]{6})/","$1 ",$words)
$wordlength = strlen(implode("", $words));
// if (3*$wordlength < 2*$width) {
// don't touch lines shorter than 2/3 * width
// continue;
// }
$spaces = $width - $wordlength;
$index = 0;
do {
$words[$index] = $words[$index] . " ";
$index = ($index + 1) % ($wordcount - 1);
$spaces--;
} while ($spaces>0);
$lines[$line_index] = implode("", $words);
}
return implode($break, $lines);
}