Réduction logique d'un titre

Jean75
Invité n'ayant pas de compte PHPfrance

28 août 2008, 10:58

Bonjour,

Je cherche une solution pour réduire une chaîne de caractère soit un titre de news.

J'ai un titre qui peut faire au max 30 caractères lors de l'affichage. J'ai donc pris la solution avec:
substr('Je suis le nouveau titre du blog de Jean de Larue', 0, 30));

Je vais donc avoir une chaîne de 30 caractères. Mais généralement le dernier mot est coupé en plein milieu et ne veux plus rien dire.
Je cherche donc au solution pour réduire mon titre de manière logique:

titre normal: "je suis une titre de grande news"
titre avec découpe logique: "Je suis une titre..."

Si vous avez une solution; merci d'avance.

Bonne journée

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

28 août 2008, 11:16

Bonjour,

Voici une approche:
1) tu coupes à la longueur maximale que tu veux (par exemple 30, tu l'as déjà fait)
2) dans ton titre coupé, tu recherches le dernier espace : http://fr.php.net/strrpos
3) tu recoupes ta chaine à la position récupérée précédemment

Ainsi tu va couper sur un espace et pas au milieu d'un mot :)
Quand tout le reste a échoué, lisez le mode d'emploi...

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

28 août 2008, 11:27

Des solutions sont existantes sur le forum... essaie une recherche avec "tronquer" :-k

*** me rend compte que je dis ça à chaque fois... mais ça existe ***

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Invité
Invité n'ayant pas de compte PHPfrance

28 août 2008, 11:47

Voilà trouvé sur le site du Zero:

Code : Tout sélectionner

function extrait($string,$start = 30,$end = 0,$sep = '...') { $extrait = substr($string,0,$start); $extrait = substr($string,0,strrpos($extrait,' ')).$sep; $extrait2 = strstr(substr($string, -$end,$end),' '); return $extrait.' '.$extrait2; }