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ère tout les lien d'une pae


Sujet :

Langage PHP

  1. #1
    Membre averti
    Inscrit en
    Janvier 2011
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 40
    Par défaut récupère tout les lien d'une pae
    salut tout le monde j'ai ce code qui récupère le titre d'une page et il fonction bien ,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $ch = curl_init();
    $timeout = 5; // set to zero for no timeout
    curl_setopt ($ch, CURLOPT_URL, 'http://www.site.com');
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    $file_contents = curl_exec($ch);
    curl_close($ch);
    	if (eregi("<title>(.*)</title>", $file_contents, $Sortie)) $Titre = $Sortie ;
    echo $Titre[1] ;

    mon prob c que je veux utiliser ce code pour obtenir tous les lien d'une page

    exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    eregi("<a href='(.*)'>", $file_contents, $Sortie)) $Titre = $Sortie ;
    mais ca marche pas !!

  2. #2
    Membre Expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Par défaut
    Bonsoir,

    voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $url = 'http://le-site.fr';
    $html = file_get_contents($url);
    preg_match_all('/<a (.*?)href="(.*?)"(.*?)>(.*?)<\/a>/i', $html, $matches);
    echo '<pre>' . print_r($matches, TRUE) . '</pre>';

  3. #3
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

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

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 420
    Par défaut
    Comme c'est assez simple tu pourrais aussi utiliser DomDocument ce qui devrait être un peu plus rapide :

    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
    <?php
    $page_cible = 'http://www.developpez.net/forums/d1039363/php/langage/recupere-lien-pae/';
     
    $tab = array();
     
    $dom = new DOMDocument;
     
    if(@$dom->loadHTMLFile($page_cible))
    	{
    		$domliste = $dom->getElementsByTagName('a');
     
    		foreach($domliste as $a) 
    		{
    			//$a->getAttribute('href') contenu du href
    			$attribut_href = $a->hasAttributes() ? $a->getAttribute('href') : null;
    			//$a->nodeValue contenu du libellé entre <a> et </a>
    			$tab[$attribut_href] = $a->nodeValue;
    		}
    	}
    	else
    	{
    		echo 'le document '.$page_cible. ' n\'a pas pu être chargé';
    	}
     
    echo '<pre>';
    print_r($tab);
    echo '</pre>';
    ?>
    Par contre si tu utilises les expressions régulières prends soin d'utiliser preg_match, car ereg... est déprécié depuis php 5.3

  4. #4
    Membre Expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Par défaut
    Tout à fait, mais il faudrait pour cela un code XHTML parfaitement valide.

  5. #5
    Membre averti
    Inscrit en
    Janvier 2011
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 40
    Par défaut
    Merci ca marche bien

  6. #6
    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 ThomasR Voir le message
    Tout à fait, mais il faudrait pour cela un code XHTML parfaitement valide.
    non DOMDocument lit le le HTML, le DOM c'est différent du XML

  7. #7
    Membre Expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Par défaut
    @stealth35, en effet. Par contre çà a pas l'air de gérer certaines choses qu'HTML5 autorise de nouveau (cf: http://alanstorm.com/parsing_html_with_php).
    ++

  8. #8
    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 ThomasR Voir le message
    @stealth35, en effet. Par contre çà a pas l'air de gérer certaines choses qu'HTML5 autorise de nouveau (cf: http://alanstorm.com/parsing_html_with_php).
    ++
    c'est plus le DOM 3 que le HTML5, la libxml2 ne gère pas toutes les nouveautés du DOM 3,
    peu être quand y'aura la libxml3, et comme PHP en dépend...
    En même temps c'est pas vraiment sortie officiellement, y'a plus qu'a attendre

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

Discussions similaires

  1. Avoir un message de confirmation sur tout les liens d'une page
    Par Oberown dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 27/12/2012, 12h02
  2. récupéré la liste de tout les attributs d'une classe
    Par php_faboul dans le forum Langage
    Réponses: 2
    Dernier message: 07/01/2010, 18h29
  3. Réponses: 2
    Dernier message: 09/07/2008, 15h49
  4. Pb effacer toutes les tables d'une bd access
    Par madiam2004 dans le forum Bases de données
    Réponses: 5
    Dernier message: 30/05/2004, 16h24
  5. Sélection de toute les tables d'une base
    Par lord_paco dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 21/07/2003, 15h56

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