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;
}
Tags :
Classé dans : Dévellopement web

Commentaires

  1. Jo Hélico a dit :

    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. Nakuni a dit :

    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. Maison Djerba a dit :

    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. Affinités a dit :

    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. Nakuni a dit :

    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 :P

  6. Will@Poker-en-ligne a dit :

    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. Assurer 1 a dit :

    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. Julien@bapteme parachute a dit :

    Lol je cherche depuis des heures et même sur un forum bien connu on est pas foutu de m’aider !
    Tu viens de me sauver la vie avec ton billet^^

  9. Tony a dit :

    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.

  10. idée cadeau a dit :

    As-tu essayé la fonction wordwrap. Il me semble qu’elle fait celà en natif, non ?
    http://www.php.net/manual/fr/function.wordwrap.php

  11. Nakuni a dit :

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

  12. referencement internet a dit :

    utile pour ne pas faire de duplicate, lorsqu’on a un site qui a des listing qui vont vers un détails (une soluce php bien mieux que le css)

  13. julie a dit :

    Ce sont ce genre de tuyaux qui rendent nos vies meilleures! ;)

Laisser une réponse


Stop SOPA