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 :

[Tableaux] Segmenter une chaine, puis affichage limité et au hasard?


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Inscrit en
    Mai 2005
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 4
    Points : 3
    Points
    3
    Par défaut [Tableaux] Segmenter une chaine, puis affichage limité et au hasard?
    Bonjour à tous !

    Voila j'utilise la fonction strtok() pour segmenter une chaine :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $machaine = 'voici|un|exemple|de|chaine|de|caractere|avec|plein|de|mots';
     
    $tok = strtok($machaine,'|');
     
    while ( $tok !== false ) :
     
    	echo $tok;
     
    endwhile;
    ça ça fonctionne parfaitement.

    Le truc, c'est que je souhaiterais ne pas tout afficher, mais juste une partie (5 mots sur 10 par exemple), et pour compliquer encore, si possible au hasard

    Je m'arrache les cheveux depuis hier, mais je n'ai rien trouvé...

    Merci d'avance de votre aide !

  2. #2
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    on va combiner trois fonctions:
    1/ explode() qui va te découper ta chaine en un tableau
    2/ shuffle() pour mélanger le tableau
    3/ rand() pour tirer un nombre aléatoire:

    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
    <?php 
    $machaine = 'voici|un|exemple|de|chaine|de|caractere|avec|plein|de|mots';   
    // découpe la chaine 
    $mots = explode('|', $machaine);   
    // mélange le tableau 
    shuffle($mots);   
    // tire un nombre d'éléments aléatoires a afficher 
    // compris entre 1 et le nb de mots max
    $nbElements = rand(1, count($mots));   
     
    for($i=0; $i< $nbElements ; $i++ ) 
    { 
    echo $mots[$i] . "<br/>"; 
    }   
     
    ?>
    Deux sorties possibles:
    de
    exemple
    plein
    chaine
    mots
    de
    de
    ou encore
    mots
    caractere
    avec
    voici

  3. #3
    Candidat au Club
    Inscrit en
    Mai 2005
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Enorme !!! Merci koopajah !

    C'est exactement ça !

    Allez pour compliquez encore, aurais tu une solution pour traiter les doublons?

    Par exemple si la chaine est = 'phrases|avec|plein|de|mots|et|avec|des|phrases';

    Comment ne faire apparaitre qu'une fois le mot "phrases"?

    D'avance merci!

  4. #4
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    avant de mélanger ton tableau avec shuffle, utilises la fonction array_unique() pour enlever les doublons dans le tableau

  5. #5
    Candidat au Club
    Inscrit en
    Mai 2005
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Pfff ! Je crois que y'en a qui m'épaterons toujours !

    Comment coder en 5mn ce qui m'a pris 2 jours...

    En tout cas bravo et merci beaucoup !

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

Discussions similaires

  1. [Tableaux] Utiliser une chaine pour appeler variable
    Par fr6m0v dans le forum Langage
    Réponses: 4
    Dernier message: 15/06/2007, 10h23
  2. [Tableaux] Parcourir une chaine html
    Par batama dans le forum Langage
    Réponses: 1
    Dernier message: 30/05/2007, 13h31
  3. Masquage d'une div puis affichage d'une autre
    Par pierreonxbox dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 22/05/2007, 15h00
  4. [Tableaux] Décomposer une chaine de caratères
    Par bianconeri dans le forum Langage
    Réponses: 8
    Dernier message: 06/03/2006, 16h43
  5. [Tableaux] decouper une chaine de caractères
    Par pekka77 dans le forum Langage
    Réponses: 12
    Dernier message: 03/12/2005, 20h08

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