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 :

Boucle $i et variable


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Octobre 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2013
    Messages : 14
    Points : 10
    Points
    10
    Par défaut Boucle $i et variable
    Bonjour,



    <config>Windows 7 / Chrome 39.0.2171.95</config>
    PHP 5.4

    Je me démêle avec un code qui ne fonctionne pas depuis 3 jours :-/

    Voici le code très court :
    /////////////////////////////////////////////////////
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $url = file_get_contents("C:/a/$id.txt");
    preg_match_all('@<span itemprop="genre">(.*?)</span>@si',$url,$genre); 
     
    $nb=count($genre[1]);
    for($i=0;$i<$nb;$i++) 
    {
    echo $genre[1][$i].", "; 
    $genre2 = $genre[1][$i];
    echo $genre2;
    }
    ////////////////////////////////////////////////////////

    Voilà c'est tout :-)
    La ligne
    echo $genre[1][$i].", ";
    me renvoit les 2 résultats contenus

    La ligne
    echo $genre2;
    ne me renvoit que le dernier résultat.

    Savez-vous comment avoir les 2 résultats dans une seule variable ?

    D'avance merci
    Ikki

  2. #2
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 858
    Points : 6 556
    Points
    6 556
    Par défaut
    La description de ton problème n'est pas bien clair. Après une tentative de déchiffrage, je suppose que tu veux obtenir une chaîne avec tes résultats séparés par une virgule.
    Si c'est bien ce que tu souhaites faire, tu n'as quasiment rien à faire, un simple implode te donnera ce que tu veux.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    // on commence par choisir des noms de variable qui ont un sens
    $url = "C:/a/$id.txt";
    $html = file_get_contents($url);
     
    // on place preg_match_all dans un if, car rien ne garantit que la recherche va donner des résultats
    if (preg_match_all('~<span itemprop="genre">(.*?)</span>~', $html, $matches)) { 
        print_r($matches[1]); // affiche le tableau des résultats
        echo implode(', ', $matches[1]); // affiche les résultats séparés par une virgule (et un espace)
    }
    Maintenant pour extraire des informations d'un code html on utilise plutôt DOMDocument:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $dom = new DOMDocument;
    $dom->loadHTMLFile($url);
    $spanNodesList = $dom->getElementsByTagName('span');
    $results = array();
     
    foreach ($spanNodesList as $spanNode) {
        if ($spanNode->hasAttribute('itemprop') && $spanNode->getAttribute('itemprop') === 'genre')
            $results[] = $spanNode->nodeValue;
    }
     
    echo implode(', ', $results);
    Brachygobius xanthozonus
    Ctenobrycon Gymnocorymbus

  3. #3
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $url = file_get_contents("C:/a/$id.txt");
    preg_match_all('@<span itemprop="genre">(.*?)</span>@si',$url,$genre);
    echo implode(",", $genre[1]);
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  4. #4
    Membre à l'essai
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Octobre 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2013
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    En fait c'est plutôt pour avoir une variable "genre2" avec toutes les valeurs de "genre", que je pourrai utiliser à un autre moment directement comme ça $genre2

    Une sorte de concatenation de deux variables en une.

    Le pourquoi ? C'est pour débloquer ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $monfichier = fopen('C:/a/genre.txt', 'a+');
    $tab = "$genre2 \r\n";
    fputs($monfichier, $tab);
    fclose($monfichier);
    En effet il n'y a que la dernière valeur de $genre qui est inscrite dans le txt

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Et bien au lieu de echotu mets $tab =Il faut vraiment que tu apprennes les toutes premières bases de PHP
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Membre à l'essai
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Octobre 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2013
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Et bien au lieu de echotu mets $tab =Il faut vraiment que tu apprennes les toutes premières bases de PHP

    Tu as raison :-)

    Merci beaucoup.

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

Discussions similaires

  1. [XSLT] Faire une boucle sur une variable [i]
    Par PoT_de_NuTeLLa dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 07/06/2010, 12h45
  2. Boucle sur une variable de type "heure"
    Par Charles25 dans le forum ASP
    Réponses: 3
    Dernier message: 15/11/2006, 17h51
  3. [HTML] boucle sur une variable et non pas un tableau
    Par delma dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 03/11/2006, 15h03
  4. Boucle for et variable
    Par Krispy dans le forum Linux
    Réponses: 2
    Dernier message: 07/09/2006, 18h03
  5. Faire une boucle avec des variables vides ?
    Par byloute dans le forum Linux
    Réponses: 5
    Dernier message: 23/02/2006, 09h33

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