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 :

Récupération de chaîne


Sujet :

Langage PHP

  1. #1
    Modérateur
    Avatar de blueice
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2003
    Messages
    3 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 487
    Points : 5 134
    Points
    5 134
    Par défaut Récupération de chaîne
    Salut,

    Je ne suis pas un as des expressions régulières...
    J'ai commencé à faire quelque chose mais je bloque, je voudrais récupérer tous les noms des styles CSS dans une page html.(id et class)

    J'ai fait 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
    18
    19
    20
    21
    22
    23
    24
     
     
     
    $chaine=file_get_contents('http://www.toto.com/index.html'); 
     
    $motif='`id="[^]+"[^<]+`'; 
    preg_match_all($motif,$chaine,$out); 
     
    $count=count($out[0]); 
     
    for($i=0;$i<$count;$i++) 
    { 
    echo $out[0][$i],'<br/>'; 
    } 
     
    $motif2='`class="[^]+"[^<]+`'; 
    preg_match_all($motif2,$chaine,$out); 
     
    $count=count($out[0]); 
     
    for($i=0;$i<$count;$i++) 
    { 
    echo $out[0][$i],'<br/>'; 
    }
    Mais je ne voudrais que les noms, comment je fais.

    P.S. : Comment on colorise le code PHP ? j'ai essayé les balises [php][/php] sans succès.
    -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_SIGNATURE -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
    Dans la mesure du possible, essayez de montrer votre problème en situation réelle en nous donnant une url, que l'on puisse tester.
    Pensez également à cocher

    Aucun problème ne doit être résolu en MP (Message Privé) le forum est là pour ça.

    Dimension Internet

  2. #2
    Membre confirmé Avatar de stunti
    Inscrit en
    Mai 2006
    Messages
    520
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Mai 2006
    Messages : 520
    Points : 594
    Points
    594
    Par défaut
    Tu n'as pas de capture dans tes motifs

    essaye ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $motif='#id="(.*?)"#mi';
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $motif2='#class="(.*?)"#mi';
    If it's not broken, don't fix it.
    BiliBa Built on top of Zend Framework

  3. #3
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    salut

    tentes ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $chaine=file_get_contents('http://www.toto.com/index.html'); 
     
    $motif='< (id|class) *= *"([^"]+)">';
    preg_match_all($motif,$chaine,$out, PREG_SET_ORDER); 
     
    $count=count($out); 
     
    for($i=0;$i<$count;$i++) 
    { 
    echo $out[$i][2].' ['.$out[$i][1].']<br/>'; 
    }
    pour colorier le code je crois que c'est : http://php.developpez.com/bbcode
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  4. #4
    Membre confirmé Avatar de stunti
    Inscrit en
    Mai 2006
    Messages
    520
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Mai 2006
    Messages : 520
    Points : 594
    Points
    594
    Par défaut
    Je prefere ta soluce Swoög mais ca risuqe de ne pas etre ordonne dans le tableau de retour.

    mais c plus class
    If it's not broken, don't fix it.
    BiliBa Built on top of Zend Framework

  5. #5
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    si tu veux avoir les class d'un côté et les id de l'autres, ça peut se faire aussi
    (je suis de bonne humeur paske j'ai fini mes partiels aujourd'hui, donc t'as droits à deux solutions ) :
    Un : une seule regexp, on met le tout dans un tableau ^^
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $chaine=file_get_contents('http://www.toto.com/index.html'); 
     
    $motif='< (id|class) *= *"([^"]+)">';
    preg_match_all($motif,$chaine,$out, PREG_SET_ORDER); 
     
    $count=count($out); 
    $styles_name = array('id'=>array(), 'class' => array());
    for($i=0;$i<$count;$i++) $styles_name[$out[$i][1]][] = $out[$i][2];
    dans $styles_name['id'] t'as la liste des id, dans $styles_name['class'] t'as la liste des class

    Deux : deux regexps (et ici, affichage direct) :
    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
    $chaine=file_get_contents('http://www.toto.com/index.html'); 
     
     
    $motif='< id *= *"([^"]+)">';
    preg_match_all($motif,$chaine,$out, PREG_SET_ORDER); 
     
    $count=count($out); 
    echo 'id : <br />';
    for($i=0;$i<$count;$i++)  echo $out[$i][1].'<br/>'; 
     
     
    $motif='< class *= *"([^"]+)">';
    preg_match_all($motif,$chaine,$out, PREG_SET_ORDER); 
     
    echo 'class : <br />';
    $count=count($out);
    for($i=0;$i<$count;$i++) echo $out[$i][1].'<br/>';
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  6. #6
    Modérateur
    Avatar de blueice
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2003
    Messages
    3 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 487
    Points : 5 134
    Points
    5 134
    Par défaut
    Swoög ca ne marche pas et Stunti, ton code donne la même chose que moi :

    Résultat par exemple :

    id="content"
    id="footer"
    class="hidden"
    class="recherche"

    moi je voudrais uniquement ce qu'il y a entre ""

    content
    footer
    hidden
    recherche



    P.S. : Et bien sûr si possible du premier coup...
    -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_SIGNATURE -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
    Dans la mesure du possible, essayez de montrer votre problème en situation réelle en nous donnant une url, que l'on puisse tester.
    Pensez également à cocher

    Aucun problème ne doit être résolu en MP (Message Privé) le forum est là pour ça.

    Dimension Internet

  7. #7
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    Excuse moi, en effet, ça marchait du premier coup...

    on pourrait encore les améliorer un peu (style pour prendre en compte les ' en plus des ")

    j'ai modifier mes codes, ils fonctionnent maintenant, testés désolé ^^
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  8. #8
    Modérateur
    Avatar de blueice
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2003
    Messages
    3 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 487
    Points : 5 134
    Points
    5 134
    Par défaut
    Désolé Swoog, mais aucun des deux ne fonctionnent...
    Tu as testé sur une adresse ?
    -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_SIGNATURE -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
    Dans la mesure du possible, essayez de montrer votre problème en situation réelle en nous donnant une url, que l'on puisse tester.
    Pensez également à cocher

    Aucun problème ne doit être résolu en MP (Message Privé) le forum est là pour ça.

    Dimension Internet

  9. #9
    Membre confirmé Avatar de stunti
    Inscrit en
    Mai 2006
    Messages
    520
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Mai 2006
    Messages : 520
    Points : 594
    Points
    594
    Par défaut
    Allez c'est cadeaux


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $motif='#id=(\'|")(.*?)(\'|")#mi';
     
    preg_match_all($motif,$chaine,$out); 
     
    $count=count($out[0]); 
     
    for($i=0;$i<$count;$i++) 
    { 
    echo $out[2][$i],'<br/>'; 
    }
    If it's not broken, don't fix it.
    BiliBa Built on top of Zend Framework

  10. #10
    Modérateur
    Avatar de blueice
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2003
    Messages
    3 487
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 487
    Points : 5 134
    Points
    5 134
    Par défaut
    Merci ca marche

    Je chercherais à comprendre le motif ce soir...
    -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_SIGNATURE -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
    Dans la mesure du possible, essayez de montrer votre problème en situation réelle en nous donnant une url, que l'on puisse tester.
    Pensez également à cocher

    Aucun problème ne doit être résolu en MP (Message Privé) le forum est là pour ça.

    Dimension Internet

  11. #11
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    Heu pour moi les deux marches (même les trois) : http://informatique-en-vrac.homedns.org/test.php
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

Discussions similaires

  1. Réponses: 36
    Dernier message: 13/11/2013, 16h46
  2. récupération dans chaîne de caractère
    Par Deskwisk dans le forum Débuter
    Réponses: 2
    Dernier message: 11/05/2011, 11h16
  3. [Excel] Récupération de chaîne et remplacement
    Par Rupella dans le forum Général Python
    Réponses: 5
    Dernier message: 23/01/2009, 21h23
  4. [shell] Problème récupération de chaîne
    Par loopback dans le forum Linux
    Réponses: 23
    Dernier message: 06/11/2007, 09h47
  5. Réponses: 7
    Dernier message: 14/05/2007, 11h10

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