Limiter la taille d’un texte sans couper le dernier mot (en php)

Je viens de passer un moment à chercher une expression régulière me permettant de limiter la taille d’un texte sans couper la chaîne en plein milieu d’un mot.
Finalement je dois vraiment être trop noob en expressions régulières car je n’ai pas trouvé, mais j’ai trouvé une alternative.

function racourcirtexte($texte, $taille){
        //on coupe à l'arrache
	$texte=substr($texte, 0, $taille);	
 
        //on vire la dernière suite de caractère (le dernier mot qu'il soit coupé ou pas)
	$pattern = '#[[:space:]][^ ]+$#iU';
	$texte = preg_replace($pattern, "", $texte);
	return $texte;
}

Si quelqu’un à mieux, je suis preneur 😉

EDIT: Quelqu’un à mieux! Merci Jo helico (Hop un autre BL offert ;)):

        function racourcirtexte($sText, $iLimit){
	if(strlen($sText) > $iLimit){
		$sText = substr($sText, 0, $iLimit);
		$sText = substr($sText, 0, strrpos($sText, ' '));
	}
	return $sText;
}

13 réflexions au sujet de « Limiter la taille d’un texte sans couper le dernier mot (en php) »

  1. Plus simple et moins gourmand qu’une expression régulière :

    function cutMe($sText, $iLimit)
    {
    if(strlen($sText) > $iLimit)
    {
    $sText = substr($sText, 0, $iLimit);
    $sText = substr($sText, 0, strrpos($sText, ‘ ‘)) . ‘…’;
    }

    return $sText;
    }

  2. Non, ne me dîtes pas qu’il n’y a pas que des spameurs qui passent sur mon blog :p

    En effet j’ai vraiment tendance à chercher compliqué pour faire simple, merci pour ta fonction qui va remplacer la mienne sur mon projet. Je vais éditer mon billet aussi 😉

  3. Le genre de détails qui peuvent faire la différence.
    J’avoue n’y avoir jamais pensé mais c’est clairement super utile dans certaines formulaires.

    Merci du partage, je test ça à l’occas.

  4. Ce doit être utile, ok, mais je ne vois pas dans quelle situation tu as eu à couper un texte en JS ?
    Je vois bien des cas avec un retour PHP/JSON, mais en Javascript seul… ?
    C’est bête comme question mais jme demande, ça peut servir.

  5. Effectivement c’est bête comme question car ce n’est pas du JS mais du PHP, du coup tu as perdu ton Back Link 😛

  6. Typiquement le genre de fonction utile à l’occasion, qu’on passe 3h à rechercher quand on en a besoin, sur le net, dans ses projets, alors qu’on mettrait moins de temps à la refaire :p
    Je vais essayer de la mettre de coté pour la prochaine fois ou j’en aurais besoin tiens, ça sera toujours un peu de temps de gagner ! Merci ! \o/

  7. Ah ça c’est utile !
    Je vais tenter de l’incorporer à WordPress pour mes excerpts..
    Je vais voir ce que ça donne, merci en tout cas !
    David

  8. Chouette, merci pour cette fonction. J’utilisais auparavant une fonction devenu obsolète. J’avais trouvé des équivalents, mais ils étaient trop lourd.
    Encore merci.

  9. Non, wordwrap c’est pour ajouter des sauts de ligne pour que chaque ligne ne dépasse pas un nombre donné de caractères.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *