Raccourcir une chaine avec un séparateur au milieu

Contenu du snippet

Vous avec une chaine de ce type :

J'aime le PHP et j'espère que ma modeste source vous plaira

Le passage vers la fonction donne :

J'aime le PHP et...vous plaira

Source / Exemple :


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

Conclusion :


Vos remarques et critiques sont les bienvenus !

A voir également

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.