Soyez le premier à donner votre avis sur cette source.
Vue 11 566 fois - Téléchargée 207 fois
<?php // Function permettant de verifier l'existance d'un lien retour situé sur une page accesible depuis la page d'acceuil // d'un nom de domaine precis // $page_source = le nom de domaine sur lequel on souhaite effectué la rechercher ex:"http://nomdusite.com" // $lien_a_verifier = le lien ou la chaine de caracteres a recherché ex:"nomdusite.com" function check_lien_retour($page_source,$lien_a_verifier) { //Chargement du contenu de la page dans une variable $page = file_get_contents($page_source); //Recherche une chaine terminant par: .htm ou .html ou .php ou .asp ou .aspx // et ne contenant que des caracteres autorisé dans une url $regex = '#'; $regex .='[\+%\/a-z0-9._-]+\.php'; // pour l'extention php $regex .='|[\+%\/a-z0-9._-]+\.html'; // pour l'extention html $regex .='|[\+%\/a-z0-9._-]+\.aspx'; // pour l'extention aspx $regex .= '#i'; preg_match_all($regex,$page,$resultat,PREG_PATTERN_ORDER); // creation du regex de la chaine a verifier $lien_a_verifier="#".$lien_a_verifier."#i"; // Affiche les liens situé sur la page d'acceuil vers d'autre pages echo '<textarea rows="20" cols="50" >'; print_r($resultat); echo '</textarea><br/>'; //Listage des liens trouvés foreach ($resultat[0] as $liens) { // Donne l'URL exacte de la page a verifier $liens=$page_source."/".$liens; //echo $liens."<br/>"; // Verifie l'existence d'une chaine de caracteres comprenant le lien a verifier $page0 = implode("", file($liens)); if(preg_match($lien_a_verifier ,$page0)) { // Si la chaine existe $url_presente=true; $url_page_du_liens = $liens; } } if($url_presente==true) { echo 'lien présent sur le site: <a href="'.$page_source.'" target="_blank">'.$page_source.'</a> sur cette page: <a href="'.$url_page_du_liens.'" target="_blank">'.$url_page_du_liens.'</a><br/>'; } else { echo 'lien absent sur le site: <a href="'.$page_source.'" target="_blank">'.$page_source.'</a><br/>'; } }// Fin de la function
26 févr. 2009 à 15:17
Mais je viens de découvrir que mon script a des limites (de très grandes limites :-( ), pour le moment il ne prend pas en compte les url composées (comme par exemple /blabla.php?lg=fr&...)
En plus je n'ai pas encore réussi a faire la liste des liens contenue sur une autre page que la page d'accueil ...
Mais ça va venir, enfin j'espère.
Avez vous une idée de toutes les extension d'une page (pouvant être lu par un navigateur) possible ???
Merci encore de votre aide.
Giloum.
26 févr. 2009 à 10:52
25 févr. 2009 à 21:05
Moi j'ai pour habitude de ne pas noter...
Mais j'ai quelque chose à dire ^^
Ligne 22 tu utilises ereg() : c'est dommage, parce que preg_match() est beaucoup plus performant à motif équivalent. C'est d'autant plus 'important' que tu l'utilises dans une boucle et que tu ne sais pas combien de fois elle va être exécutée.
Et même, pour aller encore plus vite, comme tu veux juste vérifier la présence d'une simple chaîne de caractère dans une autre, l'utilisation de strpos() serait encore plus judicieuse.
Autre petit truc : tu utilises une variable $url_presente, qui n'est pas définie si le lien n'a pas été trouvé. PHP déclenchera une erreur de type notice, qui s'affichera si error_reporting() n'est pas à 0. Et au lieu d'utiliser une chaîne dans la variable, autant utiliser un booléen (true/false), dont c'est justement l'utilité ici (un peu plus performant, surtout si le test est effectué avec === ).
Bon ce ne sont que des détails qui ne remettent pas en question la méthode ;)
25 févr. 2009 à 16:40
Puisque tu est nouveau je te souhaite la bienvenue sur PHPCS :)
Ta source est très utile et je t'encourage à continuer sur la voie du partage.
Bonne prog à toi,
akh
PS : J'ai noté 10 pour t'encourager et aussi car y'à rien à dire (critique) sur ta source. Bonne continuation
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.