Récupérer les URLs et les Emails d'une page en PHP
Voici quelques lignes de codes, notamment composé d'expressions régulières vous permettant de récupérer toutes les adresses emails contenus dans une page ainsi que les liens qui la compose.
Dans un premier temps, prenons l'exemple ou l'on souhaite récupérer le contenu d'une page pour ensuite la traiter.
<?php # Adresse du site à "exploiter" $url = 'http://www.monsite.com'; # On récupère le contenu $file = file_get_contents($url);
Désormais le contenu de la page est contenu dans notre variable "$file".
Adresses Emails
Grâce à une expression régulière nous avons la possibilité de récupérer dans un tableau toutes les adresses emails contenus dans notre variable.
<?php # Récupération des emails preg_match_all('`[a-zA-Z0-9_\.]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+`m', $file, $emails); # Affichage du tableau print_r($emails[0]);
Il se peut que la même adresse ressorte plusieurs fois dans votre tableau. Dans ce cas vous pouvez utiliser la fonction array_unique().
URLs
La méthode reste identique, à savoir lister toutes les balises "<a" et en récupérer le contenu de l'option "href".
<?php # Récupération des URLs preg_match_all('/<a[^>]+href="([^"]+)/i', $file, $urls); # Affichage print_r($urls[1]);
Il est aussi possible de récupérer des doublons en fonction des sites mais aussi des liens tronqués ou des morceau de code javascript. Pour cela vous pouvez par exemple tester si le site existe ou vérifier le format de l'adresse url toujours avec une expression régulière.
Trés intéressant comme astuce, j'avais chercher un truc de ce genre pour récupérer le titre de la page grâce à un script qui lui récupère les FluxRSS..
trop sympa
Je te remercie infiniment
PS : je m'abonne a ton blog
<?php
print_r($emails[0]);
et non :
<?php
print_r($emails[0];
Merci bien c'est corrigé.
Du coup, c'est bon à savoir ça ! Merci
Merci beaucoup pour ces bouts de code.
Je n'ai trouver sur aucun site (et ça fait au moins une heure que je recherche) de solution pour récupérer les url et ton bout de code fonctionne.
Merci