}
# Encode for output in html. Preserves newlines and indentation by converting
-# newlines to <br> and spaces at the begining of lines to
+# newlines to <br> and spaces/tabs at the begining of lines to s
#
# Example: <p>~foo htmlbrtab~</p>
function enc_htmlbrtab($str) {
$str = enc_htmlbr($str);
- $space_to_nbsp = create_function('$matches', 'return str_repeat(\' \', strlen($matches[0]) * 2);');
- $str = preg_replace_callback("|^ *|m", $space_to_nbsp, $str);
+ $whitespace_to_nbsp = create_function('$matches', '$count = 0; $chars = str_split($matches[0]); foreach ($chars as $c) { if ($c == " ") { $count += 2; } else if ($c == "\t") { $count += 8; } } return str_repeat(" ", $count);');
+ $str = preg_replace_callback("|^[ \t]+|m", $whitespace_to_nbsp, $str);
return $str;
}