<?php |
/**************************************************************************************/ |
/* |
Titre : Tronquer une chaîne de caractères |
|
URL : |
http://phpsources.org/code/php/chaine/348_tronquer-une-chaine-de-caracteres |
Auteur : forty |
Date edition : 28 Fév 2008 |
Website auteur : http://www.toplien.fr/ |
*/ |
/**************************************************************************************/ |
//Pour tronquer une chaine de caractères trop longue au niveau d'un séparateur |
//en gardant un minimum de caractères et en ajoutant un suffixe |
$texte1 = 'ce texte est tronqué car il contient plus de 20 caractères'; |
echo reduit_texte($texte1, 15, 20, ' ', '
'); |
// affiche : ce texte est tronqué
|
$texte2 = 'ce texte est tronqué<br />car il est sur plusieurs lignes'; |
echo reduit_texte($texte2, 15, 20, '<br />', ' <a href="suite.html">Cliquez' . |
' ici pour voir la suite</a>'); |
// affiche : ce texte est tronqué Cliquez ici pour voir la suite |
$texte3 = "ce-texte-est-tronqué-a-50-caractères-car-il-ne-contient-pas-de-sép" . |
"arateur"; |
echo reduit_texte($texte3, , 50, ' ', '
'); |
// affiche : ce-texte-est-tronqué-a-50-caractères-car-il-ne-con
|
function reduit_texte($texte, $minlen, $maxlen, $separateur = ' ', $suffix = '') |
{ |
$resultat = $texte; |
if (strlen($resultat) > $maxlen) { |
if (($pos = strrpos(substr($resultat, 0, $maxlen + strlen( $separateur ) |
), $separateur)) !== false) { |
if ($pos < $minlen) { |
$resultat = substr($resultat, 0, $maxlen) . $suffix; |
} else { |
$resultat = substr($resultat, 0, $pos) . $suffix; |
} |
} else { |
$resultat = substr($resultat, 0, $maxlen) . $suffix; |
} |
} |
return $resultat; |
} |
?> |
|
|