Vérification des url valide avec php

Soyez le premier à donner votre avis sur cette source.

Snippet vu 6 140 fois - Téléchargée 15 fois

Contenu du snippet

script vérifiant si une URL pointe vers une page vraiment valable. il affiche les status des pages(404, 403...) Il utilise la librairie CURL

Source / Exemple :


<?php 
	function verif_url($url = NULL)  
	{
		  
	    if($url == NULL) return false;
	      
	    $ch = curl_init($url);  
	    curl_setopt($ch, CURLOPT_TIMEOUT, 10);  //Temps maximal d'exécution
	    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); //Durée maximale de la tentative d'établissement de la connexion vers l'hôte distant
	    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //Avec la valeur TRUE, le contenu de la page distante est retourné sous la forme d'une chaîne par la fonction curl_exec. La valeur par défaut FALSE a pour effet d'en afficher directement la sortie.
	      
	    $data		= curl_exec($ch);  //Exécute la session cURL 
	    $httpcode	= curl_getinfo($ch, CURLINFO_HTTP_CODE); //Code HTTP de la dernière réponse reçue. La valeur sera nulle si aucune réponse n'a (encore) été reçue.
	      
	    curl_close($ch);
	    
	    // show on console::
	    if($httpcode == 200)
	    	echo $url." :: exists".$httpcode.PHP_EOL;
	    else if($httpcode == 301)
	    	echo $url." :: removed permanetly".$httpcode.PHP_EOL;
	    else if($httpcode == 302)
	    	echo $url." :: removed temporary".$httpcode.PHP_EOL;
	    else
	    	echo $url." :: not exists :: ".$httpcode.PHP_EOL;
	    
	    return in_array($httpcode, array(200, 301, 302));
	}
	
	$html =	'<a href="www.exemple.com">
				<img src="http://images.mximg.com/mdnh/sitebox/splash/Travel/Travel19147020.jpg"/>
			 </a>
			 <a href="www.exempleinvalide.com">url invalide</a>';
			 
	
	
	// verifier les url des liens
	$RegA = '#<[aA](\s)*(href|HREF)(\s)*=(\s)*[\"|\'](.*?)[\"|\'](.*?)>#is';
	preg_match_all($RegA, $html ,$Results,PREG_PATTERN_ORDER);  
	foreach ($Results[5] as $url)  
	{  
		verif_url($url);
		echo "<br>";
	}
	
	// verifier les sources des images
	$RegImg	=	'/<img [^>]*src=["|\']([^"|\']+)/i';
	preg_match_all($RegImg , $html, $matches);
	foreach ($matches[1] as $key=>$url) 
	{
		verif_url($url);
	}
	
?>

Conclusion :


ce script prend en entré un code html que vous pouvez le modifier au cours du test. il cherche les url des liens et des images et verifie leurs existances

A voir également

Ajouter un commentaire

Commentaires

brfrance
Messages postés
217
Date d'inscription
samedi 22 septembre 2012
Statut
Membre
Dernière intervention
4 mai 2019
1 -
Super script !

Brfrance
cs_hornetbzz
Messages postés
60
Date d'inscription
lundi 1 décembre 2008
Statut
Membre
Dernière intervention
3 janvier 2011
-
Bonjour

Très bonne idée, qui peut éviter qq liens morts sur les sites...
En idée d'amélioration, en admettant que la vérification soit réalisée sur des pages extérieures au serveur, encapsuler tout ce petit monde dans une classe, à laquelle tu pourrais ajouter quelques méthodes du style stocker les résultats en base de données afin de ne pas réitérer la vérification des liens/img "en double" ou avec une fréquence trop élevée.

Sinon j'ai un peu oublié les regex à la sauce php mais il me semble me rappeler que le modificateur "i" permet de s'affranchir d'écrire "href|HREF", redondant.
Et aussi à la volée, j'ai un gros doute sur l'efficacité de ta regex /, ça ne marche pas. A revoir donc.
cs_fenoril
Messages postés
24
Date d'inscription
vendredi 28 mars 2008
Statut
Membre
Dernière intervention
12 juin 2011
-
Salut !

Nickel, encore des fonctionnalités que je découvre avec dilar. Merci !

Juste un bémol, ce script serait complet s'il permettait de simplement entrer une url (fonction fetch_url si je ne m'abuse), de récupérer le contenu avant de l'analyser.

Une fonction bien utile en tout cas pour l'admin.

P.S. : Pour ton autre source sur les texte en image, je t'ai envoyé une idée de code par mp...
cod57
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
8 -
ma note
cod57
Messages postés
1654
Date d'inscription
dimanche 7 septembre 2008
Statut
Membre
Dernière intervention
11 septembre 2013
8 -
bonjour

si curl est activé sur le serveur bien sur !
quelques lignes de commentaires seraient souhaitables
ici par exemple foreach ($Results[5] as $url)

a++

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.