Bonjour,
Il y a une petite faute dans la Faq PHP au chapitre 18.1 :
Types > Chaînes de caractères > Comment couper une chaîne de caractères trop longue ?
Voici le code en question :
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| //$str est la chaîne de caractères et $nb le nombre de caractères maximum à afficher.
function tronque($str, $nb = 150)
{
// Si le nombre de caractères présents dans la chaine est supérieur au nombre
// maximum, alors on découpe la chaine au nombre de caractères
if (strlen($str) > $nb)
{
$str = substr($str, 0, $nb);
$position_espace = strrpos($str, " "); //on récupère l'emplacement du dernier espace dans la chaine, pour ne pas découper un mot.
$texte = substr($str, 0, $position_espace); //on redécoupe à la fin du dernier mot
$str = $str."..."; //puis on rajoute des ...
}
return $str; //on retourne la variable modifiée
} |
La variable $texte n'est jamais reutilisée, du coup la fonction ne redécoupera pas forcement à la fin d'un dernier mot.
De plus, on pourrait très bien fusionner les 2 dernières lignes. Mais j'imagine que la dernière ligne est là pour bien expliquer à ceux qui ne sont pas encore à l'aise avec le PHP qu'on met les 3 petits point à la fin.
Donc à la place de :
1 2
| $texte = substr($str, 0, $position_espace); //on redécoupe à la fin du dernier mot
$str = $str."..."; //puis on rajoute des ... |
On peut mettre : (correction du code originel)
1 2
| $str = substr($str, 0, $position_espace); //on redécoupe à la fin du dernier mot
$str = $str."..."; //puis on rajoute des ... |
Ou : (petite optimisation)
$str = substr($str, 0, $position_espace).'...'; //on redécoupe à la fin du dernier mot et on ajoute des ...
A vous de choisir ou à modifier si j'ai oublié quelque chose
Voila voila,
Bonne journée
++
ShinJava
Partager