IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Tronquer le titre d'un texte [PHP 5.3]


Sujet :

Langage PHP

  1. #1
    Membre habitué Avatar de guenfood
    Homme Profil pro
    Webdesigner
    Inscrit en
    Janvier 2004
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2004
    Messages : 254
    Points : 126
    Points
    126
    Par défaut Tronquer le titre d'un texte
    Bonjour,

    Dans mon code PHP, j'affiche le titre du projet dans un widget.
    Ce que je souhaite ajouter, c'est que si le titre est supérieur à 25 caractères, celui-ci soit tronqué et affiche 3 points de suspension.

    Voici ma portion de code concernée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php 
    					/*$str_name=$rs->project_title;
    					if(strlen($str_name)<25)$lenght=strlen($str_name);
    					else $lenght=25;
    					//echo "<br>".$lenght;
    					
    					$pos = strpos($str_name, ' ', $lenght);
    					if ($pos !== false) {
    						$str_name= substr($str_name, 0, $pos);
    					}*/
    	$str_name = substr(ucfirst($rs->project_title),0,24);
    	//$str_name = wordwrap(substr(strip_tags($rs->project_title),0,24),24, "\n",true); 
    	echo anchor('projects/'.$rs->url_project_title.'/'.$rs->project_id,$str_name,'style="text-decoration:none;"'); ?>
    Comment faire la modification ?

    Merci par avance pour votre aide.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Points : 1 313
    Points
    1 313
    Par défaut
    c'est possible en css (meme si ie fou la merde)
    Sinon c'est plutot simple: utilse strlen et substr!
    Je te laisse chercher un peu, si t'as des questions sur l'algo n'hésite pas je t'aiderai.

    Edit j'avais pas vu mais t'as deja essayé dans ton code ^^ ducoup je te post la solution

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if ( strlen($str_name) > 25 ) {
      $str_name = substr($str_name ,0 ,25).'...';
    }

  3. #3
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    Une fonction un peu plus élaborée ci-dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    function truncate($string, $size, $encodage = 'utf-8') {
     
            $chaine = mb_substr($string, 0, $size, $encodage); // coupe la chaine à la taille max désirée
     
            if ($chaine == mb_substr($string, 0, $size + 1, $encodage)) // pas de modif. Cette étape évite d'utiliser strlen sur la longueur totale de la chaine 
            return $chaine;
     
            // recherche le dernier espace (s'il y en a un)
            if ($lastSpace = strrpos($chaine, ' '))
            return substr($chaine, 0, $lastSpace) . '...'; 
            else
            return $chaine . '...';
    }
     
    $titre = 'Fonction de troncature de texte plus élaborée';
    $nb_caracteres = 35;
    $titre = truncate($titre, $nb_caracteres, 'utf-8');
    L'avantage est qu'elle coupe la chaine sur un espace, en évitant donc (quand c'est possible) de couper un mot en deux.

  4. #4
    Membre habitué Avatar de guenfood
    Homme Profil pro
    Webdesigner
    Inscrit en
    Janvier 2004
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2004
    Messages : 254
    Points : 126
    Points
    126
    Par défaut
    Merci pour vos réponses.
    Je vais essayer d'adapter ça à mon bout de code pour que cela passe

  5. #5
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2009
    Messages : 875
    Points : 1 313
    Points
    1 313
    Par défaut
    La fonction d'ABCIWEB est pas mal car elle permet par exemple d'afficher la mienne, plus basique affichera Mais il faut bien que tu réfléchisses au contexte de l’utilisation de cette fonction.
    La fonction plus élaboré est très utile pour des textes, commentaires et descriptions. La fonction plus basique est plus utile sur des noms longs sans forcément beaucoup d'espaces dedans (nom de famille, nom de fichier...)

  6. #6
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    Citation Envoyé par gototog Voir le message
    La fonction plus élaboré est très utile pour des textes, commentaires et descriptions. La fonction plus basique est plus utile sur des noms longs sans forcément beaucoup d'espaces dedans (nom de famille, nom de fichier...)
    Un petit exemple ? J'ai tendance à penser que pour un titre, tu vas être obligé de choisir des exemples exceptionnels pour trouver un avantage à la fonction basique.

    Certes plus on raccourci le nb de caractères affichables et plus il peut être utile d'afficher des mots mêmes tronqués (si c'est ce que tu veux dire), mais en même temps ce sera souvent insuffisant pour donner une idée plus juste et avec des effets de bord pas toujours souhaitables : dans ton exemple, quand tu écris "je mange des po..." cela peut être aussi bien des "pots de confiture", "des potirons" ou encore des "pommes de terre", des "pot au feu le plus souvent en hiver", des "poires". Bref cela ne vaut pas mieux que "je mange des...". La troncature sur des espaces évite aussi d'afficher des perles comme "je mange des p...", "je mange des q..."

    Pour avoir un titre plus significatif, il faut simplement autoriser plus de caractères, la troncature des mots n'est pas une solution et peut avoir des effets imprévus pas toujours souhaitables

  7. #7
    Membre habitué Avatar de guenfood
    Homme Profil pro
    Webdesigner
    Inscrit en
    Janvier 2004
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2004
    Messages : 254
    Points : 126
    Points
    126
    Par défaut
    Merci à tous pour votre aide.
    J'ai réussi avec la méthode d'ABCIWEB.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Tronquer les phrases d'un texte
    Par roy2work dans le forum Langage
    Réponses: 8
    Dernier message: 22/11/2013, 17h28
  2. Réponses: 9
    Dernier message: 12/07/2009, 16h00
  3. Titre de colonne = texte concaténé à une variable
    Par debdev dans le forum ODS et reporting
    Réponses: 2
    Dernier message: 12/06/2009, 14h23
  4. [WSS3] Titre colonne en texte + image
    Par enimren dans le forum SharePoint
    Réponses: 0
    Dernier message: 06/11/2007, 16h18
  5. [Système] Tronquer un long texte à un saut de ligne
    Par php_de_travers dans le forum Langage
    Réponses: 1
    Dernier message: 14/05/2006, 22h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo