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 :

Travailler à l'intérieur d'un foreach


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 6
    Par défaut Travailler à l'intérieur d'un foreach
    Bonjour à tous,

    Je me joint tout juste à votre communauté et commende déjà avec une petite question (ça commence bien !) mais je dois avouer que cela fait un bon moment que je cale dessus.

    J'ai un script qui permet de lire dans un fichier .txt des lignes de synonymes et qui doit ensuite les remplacer dans mon texte.
    Le fichier .txt est sous la forme "bonjour|salut|coucou|hello" et ainsi de suite ...

    Je voudrais que les mots de mon texte soient remplacés par un des mots de la ligne correspondante de manière aléatoire. Jusqu'ici pas de soucis, mais je voudrais que dans l'hypothèse où il trouve plusieurs fois un mot de cette même ligne, il le remplace toujours de manière aléatoire.

    Mon code actuel (partie qui bloque) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $couple_uc = implode('|', $couple_array_uc);            
     
                            foreach ($couple_array_uc as $mot_uc)
                            {
                                    $this->text = preg_replace('/ '.$mot_uc.'([ ,\.+]{1})/', ' {'.utf8_encode($couple_uc).'}$1', $this->text);                                              
                            }
    À noter que $couple_array_uc est une ligne sous forme de tableau grâce à un explode précédemment dans le code pour un traitement qui n'a rien à voir avec cette partie.


    Actuellement, en l'état, tous les mots seront remplacés par le même, alors que je voudrais que la sélection soit toujours aléatoire :/
    J'ai essayer avec array_rand mais rien n'y fait, j'en appel donc à votre savoir faire !

    Merci par avance aux personnes qui auront pris la peine et le temps de me lire et à très bientôt j’espère.

    Cordialement.

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    c'est fgetcsv pour lire du CSV

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 6
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    c'est fgetcsv pour lire du CSV
    Hors comme précisé j'utilise un fichier .txt comme précisé dans le sujet initial
    Mais là n'est pas le soucis véritablement étant donné que plus haut dans le code (que je n'affiche pas puisqu'il ne pose pas de problèmes) la lecture du fichier s'effectue sans soucis

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par Jookeur Voir le message
    Hors comme précisé j'utilise un fichier .txt comme précisé dans le sujet initial
    Mais là n'est pas le soucis véritablement étant donné que plus haut dans le code (que je n'affiche pas puisqu'il ne pose pas de problèmes) la lecture du fichier s'effectue sans soucis
    .txt c'est qu'une extension, tu utilises bien un fichier CSV

  5. #5
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Un fichier texte qui contient des données avec des colonnes séparées par un caractère donné, c'est effectivement un format de CSV. Du coup, lire le fichier via fgetcsv aurait sans doute été plus simple.

    Bon si j'ai bien compris, le problème c'est : tu as un tableau de mots synonymes et tu veux que si un de ces mots est présent dans un texte, il soit remplacé par un des autres, et ce de façon aléatoire pour chaque apparition du mot.
    Exemple : le tableau contient [bonjour, hello, salut]
    La phrase bonjour, j'ai dit bonjour doit potentiellement devenir salut, j'ai dit hello.
    C'est bien ça ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

Discussions similaires

  1. Réponses: 3
    Dernier message: 02/02/2012, 15h55
  2. Travailler avec des bits
    Par Vulvulune dans le forum Langage
    Réponses: 5
    Dernier message: 02/03/2003, 19h09
  3. savoir si 1 point est a l'intérieur d'un cercle ...
    Par skarladevobsy dans le forum Algorithmes et structures de données
    Réponses: 15
    Dernier message: 23/05/2002, 18h14

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