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 :

Limiter la longueur d'une chaîne de caractères


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2007
    Messages
    149
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 149
    Par défaut Limiter la longueur d'une chaîne de caractères
    Bonjour,

    Je souhaiterais tronquer la longueur des mots d'un menu pour un site web.

    j'ai utilisé cette fonction :
    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
    18
    19
    20
    <?php
    function tronquer($texte)
    {
    $max_caracteres=25;
    // Test si la longueur du texte dépasse la limite
    if (strlen($texte)>$max_caracteres){   
     // Séléction du maximum de caractères
    $texte = substr($texte, 0, $max_caracteres);    
    // Récupération de la position du dernier espace (afin déviter de tronquer un mot)
    $position_espace = strrpos($texte, " ");    
    $texte = substr($texte, 0, $position_espace);    
    // Ajout des "..."$texte = $texte."...";}?
    }
    }
    ?>
     
    puis je l'ai utilisé comme ceci
    <?php
    <a href=\"metier.php\">  tronquer('Métiers et secteurs d\'activités concernés') </a>
    ?>
    Mon problème est que la fonction ne fonctionne pas dans la balise <a>.

    Je remercie d'avance celui qui pourra m'aider à résoudre mon problème.

  2. #2
    Membre confirmé Avatar de royto
    Homme Profil pro
    Développeur .Net & Web
    Inscrit en
    Mai 2005
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .Net & Web

    Informations forums :
    Inscription : Mai 2005
    Messages : 92
    Par défaut
    le problème est que ta fonction ne renvoie rien donc moi je modifierait comme ca

    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
    <?php
    function tronquer($texte)
    {
    $max_caracteres=25;
    // Test si la longueur du texte dépasse la limite
    if (strlen($texte)>$max_caracteres){
    // Séléction du maximum de caractères
    $texte = substr($texte, 0, $max_caracteres);
    // Récupération de la position du dernier espace (afin déviter de tronquer un mot)
    $position_espace = strrpos($texte, " ");
    $texte = substr($texte, 0, $position_espace);
    // Ajout des "..."$texte = $texte."...";}?
    }
    //on retourne le texte
    return $texte;
    }
    ?>
    et tu affiches avec un echo le resultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <a href=\"metier.php\"><?php echo tronquer('Métiers et secteurs d\'activités concernés')?> </a>

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2007
    Messages
    149
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 149
    Par défaut
    merci

  4. #4
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2007
    Messages : 2
    Par défaut
    Bonjour, je crois que cette fonction est exactement ce que je recherche... Mais je n'arrive pas à l'introduire correctement dans mon code pour qu'elle fonctionne.....

    Voici mon code dans lequel j'aimerais tronquer la longueur du lien du titre pour qu'elle ait un maximum de 38 caracteres suivit des points de suspension (...) Il s'agit d'un lien..... Afin qu'il soit tout en entier sur la meme ligne, sans retour à la ligne.....

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    <?php
    // inclusion de la classe magpierss
    require_once("http://www.rumeursdetransactions.com/forum/magpierss/rss_fetch.inc");
     
    function FeedParser($url_feed, $nb_items_affiches=10)
    {
      // lecture du fichier distant (flux XML)
      $rss = fetch_rss($url_feed);
     
      // si la lecture s'est bien passee,
      // on lit les elements
      if (is_array($rss->items))
      {
       // on ne recupere que les elements les + recents
       $items = array_slice($rss->items,
        0, $nb_items_affiches);
     
       // debut de la liste
       // (vous pouvez indiquer un style CSS
       // pour la formater)
     
       // boucle sur tous les elements
       foreach ($items as $item)
       {
        $html .= "<a href=\"".$item['link']."\">";
        $html .= $item['title']."</a> <br> ";
       }
     }
     
     // retourne le code HTML a inclure dans la page
     return $html;
    }
    ?>
    Je voudrais que le lien s'affiche :
    "Voici le lien qui s'affiche avec une longueur de..."

    Et non comme ca le fait actuellement:
    "Voici le lien qui s'affiche avec une longueur de
    38 caracteres maximum"

    Car lorsque le lien dépasse un environ 40 caracteres, il y'a un retour à la ligne dans mon menu de droite.... Pas très jolie.... Et je n'ai aucun controle sur la longueur de ces liens puisqu'il s'agit des titres des messages postés sur mon forum....

    J'ai mis le code fournit dans le post précédent à travers le mien en changeant $texte par $item mais ca n'a rien donné.... J'suis pas un pro du PHP et j'essais d'apprendre par moi-meme... Si qqun pourrait m'aider à résoudre ce petit probleme ça serait apprécié...

  5. #5
    Membre émérite
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Par défaut
    salut
    tu peux jouer avec les css pour tronquer la largeur de ton liens
    tu lui définis un width absolu et le reste(overflow) tu le met hidden
    je faisais ca avec un nom de client car je ne voulais pas qu'il soit sur 2 lignes ou modifie la largeur de mes td
    j'ai mis le tout dans un div avec comm class le css suivant

    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <style type="text/css">
    .div
    {
    width:300px ; 
    overflow:hidden;
    white-space:nowrap;
    }
    </style>
    sinon je crois que php faut que tu tronque ta string directement et tu met le tout dans une variable... un peu de cassage de tête mais bon tu peux y arriver

  6. #6
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Mars 2007
    Messages : 2
    Par défaut
    Merci pour ton aide, ca donne "en partie" le résultat escompté

    Oui ca limite la largeur de chaque ligne, mais ca coupe litérallement le mot et c'est comme s'il manquait qqchose, des mots, des lettres à la phrase du lien.... Mais au moins ca ne me fait pas un retour à la ligne automatique, donc à ce niveau c'est parfait !

    Sauf que, j'aurais aimé que pour montrer que le titre du lien n'est pas affiché completement, que ca l'ajoute les 3 petits points de suspension à la fin de la ligne... C'est surement en PHP avec la fonction string, mais je ne sais pas exactement où l'appliquer....

    Si tu pouvais m'aider la-dessus aussi, ca serait grandement apprécié, mais je te remercie beaucoup, tu viens de m'apprendre la technique du CSS Overflow, quelque chose que je n'avais pas encore compris, maintenant oui grace à toi

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

Discussions similaires

  1. Trigger qui compte la longueur d'une chaîne de caractères
    Par miss lill dans le forum Langage SQL
    Réponses: 1
    Dernier message: 09/12/2013, 12h37
  2. Vérifier la longueur d'une chaîne de caractère
    Par Santcho dans le forum Langage
    Réponses: 4
    Dernier message: 14/06/2010, 17h29
  3. Réponses: 1
    Dernier message: 30/04/2007, 15h33
  4. Réponses: 2
    Dernier message: 11/07/2006, 14h52

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