From 42b0de48353c25ac0d265506ac6f83f3429c59f5 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@users.sourceforge.net> Date: Sat, 10 Oct 2009 16:45:37 +0000 Subject: [PATCH] A more clever truncate function. --- htdocs/lib/functions.lib.php | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/htdocs/lib/functions.lib.php b/htdocs/lib/functions.lib.php index 837f376d418..a1c127a8496 100644 --- a/htdocs/lib/functions.lib.php +++ b/htdocs/lib/functions.lib.php @@ -943,7 +943,8 @@ function dolibarr_trunc($string,$size=40,$trunc='right',$stringencoding='') } /** - * \brief Truncate a string to a particular length adding '...' if string larger than length + * \brief Truncate a string to a particular length adding '...' if string larger than length. + * If length = max length+1, we do no truncate to avoid having just 1 char replaced with '...'. * \param string String to truncate * \param size Max string size. 0 for no limit. * \param trunc Where to trunc: right, left, middle @@ -962,7 +963,7 @@ function dol_trunc($string,$size=40,$trunc='right',$stringencoding='') if ($trunc == 'right') { $newstring=dol_textishtml($string)?dol_string_nohtmltag($string,1):$string; - if (dol_strlen($newstring,$stringencoding) > $size) + if (dol_strlen($newstring,$stringencoding) > ($size+1)) return dol_substr($newstring,0,$size,$stringencoding).'...'; else return $string; @@ -970,7 +971,7 @@ function dol_trunc($string,$size=40,$trunc='right',$stringencoding='') if ($trunc == 'middle') { $newstring=dol_textishtml($string)?dol_string_nohtmltag($string,1):$string; - if (dol_strlen($newstring,$stringencoding) > 2 && dol_strlen($newstring,$stringencoding) > $size) + if (dol_strlen($newstring,$stringencoding) > 2 && dol_strlen($newstring,$stringencoding) > ($size+1)) { $size1=round($size/2); $size2=round($size/2); @@ -982,7 +983,7 @@ function dol_trunc($string,$size=40,$trunc='right',$stringencoding='') if ($trunc == 'left') { $newstring=dol_textishtml($string)?dol_string_nohtmltag($string,1):$string; - if (dol_strlen($newstring,$stringencoding) > $size) + if (dol_strlen($newstring,$stringencoding) > ($size+1)) return '...'.dol_substr($newstring,dol_strlen($newstring,$stringencoding) - $size,$size,$stringencoding); else return $string; -- GitLab