diff options
Diffstat (limited to 'inc/common.php')
-rw-r--r-- | inc/common.php | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/inc/common.php b/inc/common.php index 7aaf8098b..1f7e3f910 100644 --- a/inc/common.php +++ b/inc/common.php @@ -1206,4 +1206,27 @@ function preg_quote_cb($string){ return preg_quote($string,'/'); } +/** + * Shorten a given string by removing data from the middle + * + * You can give the string in two parts, teh first part $keep + * will never be shortened. The second part $short will be cut + * in the middle to shorten but only if at least $min chars are + * left to display it. Otherwise it will be left off. + * + * @param string $keep the part to keep + * @param string $short the part to shorten + * @param int $max maximum chars you want for the whole string + * @param int $min minimum number of chars to have left for middle shortening + * @param string $char the shortening character to use + */ +function shorten($keep,$short,$max,$min=9,$char='⌇'){ + $max = $max - utf8_strlen($keep); + if($max < $min) return $keep; + $len = utf8_strlen($short); + if($len <= $max) return $keep.$short; + $half = floor($max/2); + return $keep.utf8_substr($short,0,$half-1).$char.utf8_substr($short,$len-$half); +} + //Setup VIM: ex: et ts=2 enc=utf-8 : |