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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Modérateur
    Avatar de blueice
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2003
    Messages
    3 494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    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 494
    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.

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 520
    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';

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

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    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 :resolu: (en bas)

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

    Informations forums :
    Inscription : Mai 2006
    Messages : 520
    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

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

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    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 :resolu: (en bas)

  6. #6
    Modérateur
    Avatar de blueice
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2003
    Messages
    3 494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    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 494
    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...

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

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    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 :resolu: (en bas)

  8. #8
    Modérateur
    Avatar de blueice
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2003
    Messages
    3 494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    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 494
    Par défaut
    Désolé Swoog, mais aucun des deux ne fonctionnent...
    Tu as testé sur une adresse ?

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