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 :

Extraire des balises liens d'une page HTML [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 13
    Points : 12
    Points
    12
    Par défaut Extraire des balises liens d'une page HTML
    Bonjour,

    Actuellement, j'extrais des liens d'une page HTML avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    '#<a[^>]*href=["\']?([^"\'> ]*)["\']?[^>]*>#is'
    Et cela fonctionne bien et rammène par exemple un lien http://www.google.fr

    Mais je souhaiterais obtenir:
    <a href="http://www.google.fr">Le site Google</a>

    Soit le lien avec les balises.

    Cela est-il possible?

    Merci,

  2. #2
    Membre expérimenté Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Points : 1 414
    Points
    1 414
    Par défaut
    Peut être que je n'ai rien compris, mais j'ai testé cette expression et j'obtiens bien QUE les liens et les balises.J'ai utilisé preg_split
    ----
    L'avenir appartient à ceux dont les salariés se lèvent tôt.

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 13
    Points : 12
    Points
    12
    Par défaut
    Merci, j'ai fait ce que tu as dit ce qui donne le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $motif = '/<a?a>/';
    $content = file_get_contents('http://www.google.fr');
    $r       = preg_split($motif,$content); 
    print_r( $r);
    Mais malheureusement, çà m'affiche un début de tableau sans valeur puis la page Google....

  4. #4
    Membre expérimenté Avatar de riete
    Homme Profil pro
    DevWeb - Oléiculteur
    Inscrit en
    Avril 2006
    Messages
    1 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : DevWeb - Oléiculteur
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 193
    Points : 1 414
    Points
    1 414
    Par défaut
    Oui effectivement, j'avais fait un test sur un code trop simple.
    Je ne suis pas assez calé en expressions régulières mon aide s'arrête là.
    Désolé A+
    ----
    L'avenir appartient à ceux dont les salariés se lèvent tôt.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 57
    Points : 40
    Points
    40
    Par défaut
    ca ne passe pas ca ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    '#(<a[^>]*href=["\']?[^"\'> ]*["\']?[^>]*>[^<]*</a>)#is'

  6. #6
    Membre actif Avatar de John Blobsmith
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 198
    Points : 223
    Points
    223
    Par défaut
    Essaye peut être avec explode, du style :

    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
     
    $content = file_get_contents('http://www.google.fr');
     
    $strToSearch1 = '<a';
    $strToSearch2 = '</a>';
     
    $content = str_replace('<A','<a',$content);
    $content = str_replace('</A>','</a>',$content);
     
    $arrData = explode($strToSearch1,$content);
    unset($arrData[0]);
    $arrResultURL = array();
    foreach($arrData as $data){
      $tmpDataURL = explode($strToSearch2,$data);
      if(isset($tmpDataURL[1]))
        $arrResultURL[] = $strToSearch1.$tmpDataURL[0].$strToSearch2;
    }
    Résultat :
    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
    25
    26
    27
    28
     
    [0] => <a href="http://images.google.fr/imghp?hl=fr&tab=wi" onclick=gbar.qs(this) class=gb1>Images</a> 
        [1] => <a href="http://video.google.fr/?hl=fr&tab=wv" onclick=gbar.qs(this) class=gb1>Vidéos</a> 
        [2] => <a href="http://maps.google.fr/maps?hl=fr&tab=wl" onclick=gbar.qs(this) class=gb1>Maps</a> 
        [3] => <a href="http://news.google.fr/nwshp?hl=fr&tab=wn" onclick=gbar.qs(this) class=gb1>Actualités</a> 
        [4] => <a href="http://groups.google.fr/grphp?hl=fr&tab=wg" onclick=gbar.qs(this) class=gb1>Groupes</a> 
        [5] => <a href="http://mail.google.com/mail/?hl=fr&tab=wm" class=gb1>Gmail</a> 
        [6] => <a href="http://www.google.fr/intl/fr/options/" onclick="this.blur();gbar.tg(event);return !1" aria-haspopup=true class=gb3><u>plus</u> <small>▼</small></a> 
        [7] => <a href="http://books.google.fr/bkshp?hl=fr&tab=wp" onclick=gbar.qs(this) class=gb2>Livres</a> 
        [8] => <a href="http://blogsearch.google.fr/?hl=fr&tab=wb" onclick=gbar.qs(this) class=gb2>Blogs</a> 
        [9] => <a href="http://translate.google.fr/?hl=fr&tab=wT" onclick=gbar.qs(this) class=gb2>Traduction</a> 
        [10] => <a href="http://www.youtube.com/?hl=fr&tab=w1&gl=FR" onclick=gbar.qs(this) class=gb2>YouTube</a> 
        [11] => <a href="http://www.google.com/calendar/render?hl=fr&tab=wc" class=gb2>Agenda</a> 
        [12] => <a href="http://picasaweb.google.fr/home?hl=fr&tab=wq" onclick=gbar.qs(this) class=gb2>Photos</a> 
        [13] => <a href="http://docs.google.com/?hl=fr&tab=wo" class=gb2>Documents</a> 
        [14] => <a href="http://www.google.fr/reader/view/?hl=fr&tab=wy" class=gb2>Reader</a> 
        [15] => <a href="http://sites.google.com/?hl=fr&tab=w3" class=gb2>Sites</a> 
        [16] => <a href="http://www.google.fr/intl/fr/options/" class=gb2>et encore plus &raquo;</a> 
        [17] => <a href="/url?sa=p&pref=ig&pval=3&q=http://www.google.fr/ig%3Fhl%3Dfr%26source%3Diglk&usg=AFQjCNG3dQ3pMQCxA1EqhLnWIuH8E97qKg">iGoogle</a> 
        [18] => <a href="https://www.google.com/accounts/Login?hl=fr&continue=http://www.google.fr/">Connexion</a> 
        [19] => <a href=/advanced_search?hl=fr>Recherche avancée</a> 
        [20] => <a href=/preferences?hl=fr>Préférences</a> 
        [21] => <a href=/language_tools?hl=fr>Outils linguistiques</a> 
        [22] => <a href="/intl/fr/ads/">Programmes de publicité</a> 
        [23] => <a href="/services/">Solutions d'entreprise</a> 
        [24] => <a href="/intl/fr/about.html">À propos de Google</a> 
        [25] => <a href=http://www.google.com/ncr>Google.com in English</a> 
        [26] => <a href="/intl/fr/privacy.html">Confidentialité</a>

  7. #7
    Membre actif Avatar de John Blobsmith
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 198
    Points : 223
    Points
    223
    Par défaut
    Ou en plus simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $content = file_get_contents('http://www.google.fr');
    preg_match_all('#<a.*?</a>#i',$content, $result);
    Résultat :

    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
    25
    26
    27
    28
    29
    30
    31
     
    [0] => Array
            (
                [0] => <a href="http://images.google.fr/imghp?hl=fr&tab=wi" onclick=gbar.qs(this) class=gb1>Images</a> 
                [1] => <a href="http://video.google.fr/?hl=fr&tab=wv" onclick=gbar.qs(this) class=gb1>Vidéos</a> 
                [2] => <a href="http://maps.google.fr/maps?hl=fr&tab=wl" onclick=gbar.qs(this) class=gb1>Maps</a> 
                [3] => <a href="http://news.google.fr/nwshp?hl=fr&tab=wn" onclick=gbar.qs(this) class=gb1>Actualités</a> 
                [4] => <a href="http://groups.google.fr/grphp?hl=fr&tab=wg" onclick=gbar.qs(this) class=gb1>Groupes</a> 
                [5] => <a href="http://mail.google.com/mail/?hl=fr&tab=wm" class=gb1>Gmail</a> 
                [6] => <a href="http://www.google.fr/intl/fr/options/" onclick="this.blur();gbar.tg(event);return !1" aria-haspopup=true class=gb3><u>plus</u> <small>▼</small></a> 
                [7] => <a href="http://books.google.fr/bkshp?hl=fr&tab=wp" onclick=gbar.qs(this) class=gb2>Livres</a> 
                [8] => <a href="http://blogsearch.google.fr/?hl=fr&tab=wb" onclick=gbar.qs(this) class=gb2>Blogs</a> 
                [9] => <a href="http://translate.google.fr/?hl=fr&tab=wT" onclick=gbar.qs(this) class=gb2>Traduction</a> 
                [10] => <a href="http://www.youtube.com/?hl=fr&tab=w1&gl=FR" onclick=gbar.qs(this) class=gb2>YouTube</a> 
                [11] => <a href="http://www.google.com/calendar/render?hl=fr&tab=wc" class=gb2>Agenda</a> 
                [12] => <a href="http://picasaweb.google.fr/home?hl=fr&tab=wq" onclick=gbar.qs(this) class=gb2>Photos</a> 
                [13] => <a href="http://docs.google.com/?hl=fr&tab=wo" class=gb2>Documents</a> 
                [14] => <a href="http://www.google.fr/reader/view/?hl=fr&tab=wy" class=gb2>Reader</a> 
                [15] => <a href="http://sites.google.com/?hl=fr&tab=w3" class=gb2>Sites</a> 
                [16] => <a href="http://www.google.fr/intl/fr/options/" class=gb2>et encore plus &raquo;</a> 
                [17] => <a href="/url?sa=p&pref=ig&pval=3&q=http://www.google.fr/ig%3Fhl%3Dfr%26source%3Diglk&usg=AFQjCNG3dQ3pMQCxA1EqhLnWIuH8E97qKg">iGoogle</a> 
                [18] => <a href="https://www.google.com/accounts/Login?hl=fr&continue=http://www.google.fr/">Connexion</a> 
                [19] => <a href=/advanced_search?hl=fr>Recherche avancée</a> 
                [20] => <a href=/preferences?hl=fr>Préférences</a> 
                [21] => <a href=/language_tools?hl=fr>Outils linguistiques</a> 
                [22] => <a href="/intl/fr/ads/">Programmes de publicité</a> 
                [23] => <a href="/services/">Solutions d'entreprise</a> 
                [24] => <a href="/intl/fr/about.html">À propos de Google</a> 
                [25] => <a href=http://www.google.com/ncr>Google.com in English</a> 
                [26] => <a href="/intl/fr/privacy.html">Confidentialité</a> 
            )

  8. #8
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 13
    Points : 12
    Points
    12
    Par défaut
    Merci de vos réponses. J'ai finalement opté pour la première réponse de blobus qui fonctionne bien (je n'ai pas réussi à faire fonctionner la seconde).

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

Discussions similaires

  1. [RegEx] Extraire le code entre les balises <body> d'une page html
    Par abousa3d dans le forum Langage
    Réponses: 5
    Dernier message: 19/05/2010, 10h35
  2. RegEx pour extraire les liens d'une page html
    Par herch dans le forum API standards et tierces
    Réponses: 7
    Dernier message: 13/05/2009, 17h26
  3. Réponses: 22
    Dernier message: 29/03/2007, 22h51
  4. Réponses: 7
    Dernier message: 14/09/2005, 10h50
  5. réinitialiser les liens d'une page html
    Par sisco dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 05/11/2004, 16h03

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