Soyez le premier à donner votre avis sur cette source.
Snippet vu 8 455 fois - Téléchargée 28 fois
function shortenStr($str, $max, $sep = '.', $width = 3) { $nb = strlen($str); // Nombre de caractères if ($nb > $max) { $p = $nb - $max + $width; // Nombre de caractères en trop if ($max < $width) // Dans le cas où la largeur max est inférieur à la largeur du séparateur { $width = $max; } $start = ceil($nb / 2 - $p / 2); return substr($str, 0, $start) . str_repeat($sep, $width) . substr($str, floor($start + $p)); // début de la chaine séparateur du milieu fin de la chaine } return $str; } $chaine = 'J\'aime le PHP et j\'espère que ma modeste source vous plaira'; echo shortenStr($chaine, 30); // J'aime le PHP et...vous plaira
26 oct. 2005 à 09:37
shortenString($string, $max,$rempl){
$len = strlen($string);
if ( $len > $max ){
return preg_replace('#(.{15})(.*)(.{10})#','$1'.$rempl.'$2',$str);
}
}
a tester, perso je trouve ca plus simple et plus propre
26 oct. 2005 à 08:34
Ca serait pas plus simple de tester si la chaine n'est pas déjà aussi longue que max, et sinon :
1- déterminer le nombre de caractères à droite/gauche (nb)
2- chaine de retour = substr du début (nb) + séparateur + substr de fin (nb)
avec séparateur en dur, ne connaissant eprsonnellement pas d'autre caractère connu pour signifier "etc" dans une phrase, à part peut-être "[...]"
Ton code est beaucoup trop long pour si peu
25 oct. 2005 à 23:32
25 oct. 2005 à 23:19
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.