Nombre de liens entre deux pages...

Soyez le premier à donner votre avis sur cette source.

Snippet vu 4 349 fois - Téléchargée 31 fois

Contenu du snippet

Ce petit script permet de calculer le nombre de liens entre deux pages.
Il est très lent car le PHP ne permet pas d'avoir (de façon propre) deux sockets que l'on écoute en même temps... (En C on a select pour ça, ou des threads...)

Donc ne vous étonnez pas si il faut attendre un moment pour voir la page suivante s'afficher...

J'ai réalisé ça suite à mon étonement : j'ai lu je ne sais plus trop ou qu'il y avait en moyenne 18 liens seulement entre deux pages...

Un aperçu :
De http://php.net à http://phpsec.org/
2liens
http://www.php.net/index.php
http://phpsec.org/

Source / Exemple :


<html>
<head>
<title>Entre deux pages.</title>
</head>
<body>
<?php
function urlplus($chemin, $chemin_relatif){
	$chemin=$chemin.'/'.$chemin_relatif;
	$chemin=preg_replace('/(\/[^\/]*\.\.\/)|(\/\/)/','/',$chemin);
	return $chemin;
}
function list_liens($a, $url){
	preg_match_all('/href="(\S+)"/i', $a, $tab);
	$tab=$tab[1];
	foreach ($tab as $a=>$b)
		if (substr($b, 0, 7)!=='http://')
			$tab[$a]=urlplus($url,$b);
	return $tab;
}
function search_page($tour, $_POST, $URL, $allready){
	while (true)
		foreach ($URL[$tour] as $b)
			foreach ($b as $c)
				if (!in_array($c, $allready)){
					$allready[]=$c;
					$a=@file_get_contents($c) or $a=false;
					if ($a!==false){
						$URL[$tour+1][$c]=list_liens($a, $c);
						if (in_array($_POST['URL2'],$URL[$tour+1][$c]))
							return array($tour+1, $URL, $allready);
					}
				}
}
if (isset($_POST['URL1'])){
	echo 'De '.$_POST['URL1'],' à ', $_POST['URL2'],'<br />';
	$URL=array();
	$tour=0;
	$a=file_get_contents($_POST['URL1']);
	$URL[0][$_POST['URL1']]=list_liens($a, $_POST['URL1']);
	$allready=array($_POST['URL1']);
	list($tour, $URL, $allready)=search_page(&$tour, $_POST, &$URL, &$allready);
	echo ($tour+1),'liens<br />';
	$url_search=$_POST['URL2'];
	for (;$tour>0;$tour--)
		foreach ($URL[$tour] as $c=>$d)
			if (in_array($url_search, $d)){
				echo $c.'<br />';
				$url_search=$c;
			}
	echo $_POST['URL2'];
}else{
	echo '<p>Entrez deux URLS, nous vous donnerons le "chemin" le plus court pour aller de l\'une à l\'autre... Le nombre de liens et l\'URL de ces liens.</p>';
}
?>
<hr />
<form action="?" method="post">
	<p>de : <input type="text" name="URL1" /></p>
	<p>à : <input type="text" name="URL2" /></p>
	<input type="submit" />
</form>
</body>
</html>

Conclusion :


Bon, ça fait quelques petites démonstrations de parsings...

A voir également

Ajouter un commentaire Commentaires
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 43
14 nov. 2005 à 19:22
nonon, le nombre de liens, pas le nombre de redirections...
cs_Antidote Messages postés 163 Date d'inscription lundi 29 septembre 2003 Statut Membre Dernière intervention 8 mai 2010
14 nov. 2005 à 19:17
j'ai pas regarder ta source, je pensais que tu parlait du nombre de redirections entre deux pages
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 43
14 nov. 2005 à 19:13
quoi ?

mais de quoi parles tu ?
cs_Antidote Messages postés 163 Date d'inscription lundi 29 septembre 2003 Statut Membre Dernière intervention 8 mai 2010
14 nov. 2005 à 19:08
LE W3C n'autorise pas que 5 liens entre deux pages ?

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.