Nombre de liens entre deux pages...

Soyez le premier à donner votre avis sur cette source.

Snippet vu 4 114 fois - Téléchargée 29 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
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
38
nonon, le nombre de liens, pas le nombre de redirections...
Messages postés
163
Date d'inscription
lundi 29 septembre 2003
Statut
Membre
Dernière intervention
8 mai 2010

j'ai pas regarder ta source, je pensais que tu parlait du nombre de redirections entre deux pages
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
38
quoi ?

mais de quoi parles tu ?
Messages postés
163
Date d'inscription
lundi 29 septembre 2003
Statut
Membre
Dernière intervention
8 mai 2010

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.