Fonction Php pour couper une chaine de caractère sans couper les mots
Petit fonction toute facile pour couper une chaine de caractère sans couper les mots et sans briser des balises. Le fonctionnement est ultra simpliste et modifiable à votre convenance.
Voici la petite fonction:
//_______________________________ couper une chaine sans couper les mots // function coupeChaine($text, $max) { if (strlen($text) >= $max) { $text = ereg_replace("<[^>]*>", "", $text); $text = substr($text, 0, $max); $positionEspace = strrpos($text, " "); $text = substr($text, 0, $positionEspace)."..."; } return $text; } $chaine='Ma chaine à couper... Oulà elle est très longue... En plus je met des balises <strong>ici</strong> et <em>là</em>'; $chaineCoupee = coupeChaine($chaine,15); echo $chaineCoupee; // |
Comment ca marche:
- strlen : compte le nombre de caractère dans la chaine originale, puis rentre dans le ‘if’ si ce nombre est supérieure au nombre $max.
- ereg_replace : On enlève toutes les balises html (pour éviter de tronquer la chaine en plein milieu d’une de ces balises).
- substr : coupe la chaîne au caractère placé en $max position.
- strrpos : trouve la position du dernier espace dans la chaîne restante. La position est ensuite mis dans la variable $positionEspace.
- substr + position à couper : coupe la chaîne à la position $positionEspace. On y rajoute ensuite les “…”
- appel de la fonction : le premier paramètre de la fonction est donc le texte à tronquer, le second est le nombre de caractère max à garder dans la chaîne finale.
Voilà donc pour cette petite fonction toute simple mais bien utile.
Have fun!
| Imprimer l'article | Cette entrée a été posté par Tomredhot le 17/05/2010 à 14:15, et placée dans Php. Vous pouvez suivre les réponses à cette entrée via RSS 2.0. Vous pouvez laisser une réponse, ou bien un trackback depuis votre site. |
