Comment detecter un lien dans une page distante

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics


tryan
WRInaute accro
WRInaute accro
 
Messages: 1536
Inscription: Dim Fév 20, 2005 14:14

Comment detecter un lien dans une page distante

Message le Jeu Déc 06, 2007 18:20

Bonjour,

J'essaye de detecter un lien dans une page distante mais celui ci n'ai trouvé que si l'url est exacte.
Dans le code ci-dessous, seul le lien -http://monsite.com/annuaire/generaliste-p1-27.html alors que je souhaiterais également pouvoir détecter -http://monsite.com .
Code: Tout sélectionner
<?php

$page_source = $res_infos['url_retour'];
$lien_a_verifier = "http://monsite.com/annuaire/generaliste-p1-27.html";

$fp=@fopen($page_source,"r");
if($fp)  { 
   while(!feof($fp))  { 
   $chaine .= fgets($fp,1024); 
   } 
  } 

  $masque = '#href="(.*?)"#i';
  preg_match_all("$masque",$chaine,$out,PREG_SET_ORDER);

$i=-1;
$compte=0;
while ($i < count($out))
{
  $i++;
  // affiche tous les elements du tableau
  // vous pouvez decocher la ligne ci dessus pour avoir tous les elements du tableau
   //echo $out[$i][1];
  if($out[$i][1] == $lien_a_verifier) $compte++;
}
if ($compte > 0 )  echo 'Le lien sur <a href="'.$page_source.'" target="_blank">'.$page_source.'</a> existe  '.$compte.' fois';
else
{
echo 'pas de lien trouvé sur '.$page_source.'';

}
?>

Toutes suggestions sont les bienvenues !
Merci


Jeviensderio
WRInaute accro
WRInaute accro
 
Messages: 1340
Inscription: Ven Sep 29, 2006 12:50

Message le Jeu Déc 06, 2007 20:00

Remplacer

if($out[$i][1] == $lien_a_verifier)

par

if(srtncmp(out[$i][1],$lien_a_verifier, $x))

où $x est la taille de la chaine http://www.monsite.com


tryan
WRInaute accro
WRInaute accro
 
Messages: 1536
Inscription: Dim Fév 20, 2005 14:14

Message le Jeu Déc 06, 2007 21:10

Merci Jeviensderio mais je crains de ne pas avoir tout comprit ^^ !

J'ai une erreur:

Code: Tout sélectionner
Parse error: syntax error, unexpected '[' in /.....

J'ai donc remplacé la portion de code if($out[$i][1] == $lien_a_verifier) par:

Code: Tout sélectionner
if(srtncmp(out[$i][1],$lien_a_verifier, $x))

Puis
Code: Tout sélectionner
if(srtncmp(out[$i][1],$lien_a_verifier, $x));

et
Code: Tout sélectionner
if(srtncmp(out[$i][1],$lien_a_verifier, $x)) $compte++;


Je n'ai absolument pas comprit le "où $x est la taille de la chaine -http://www.monsite.com".
J'aurrais peut etre du préciser mon petit niveau php :lol:
Merci

FloBaoti
WRInaute passionné
WRInaute passionné
 
Messages: 684
Inscription: Dim Avr 30, 2006 18:42

Message le Jeu Déc 06, 2007 22:14

L'erreur vient du fait qu'il manque le dollar devant le nom de la variable "out" -> $out

Mais après je n'ai pas compris ce que tu voulais faire donc peux pas t'aider plus désolé...


tryan
WRInaute accro
WRInaute accro
 
Messages: 1536
Inscription: Dim Fév 20, 2005 14:14

Message le Ven Déc 07, 2007 0:23

Merci FloBaoti
Bon, j'ai tout de meme une erreur:
Code: Tout sélectionner
Fatal error: Call to undefined function srtncmp() in /home/..

..et sa me depasse :x !

En faite ce que je veux faire, c'est vérifier si le lien partenaire est bien présent ...
Code: Tout sélectionner
$page_source = $res_infos['url_retour'];

Correspond à l'url de la page ou mon lien est censé etre.
Code: Tout sélectionner
$lien_a_verifier = "http://monsite.com/annuaire/generaliste-p1-27.html";

Correspond à mon lien censé etre présent chez le partenaire.
En l'etat le code me retourne ok si l'url exacte dans la variable $lien_a_verifier est trouvé.
Je souhaiterais que le code me retourne également ok si $lien_a_verifier correspond à -http://monsite.com (sans /annuaire/generaliste-p1-27.html).


Leonick
WRInaute accro
WRInaute accro
 
Messages: 12373
Inscription: Dim Aoû 08, 2004 20:24

Message le Ven Déc 07, 2007 1:02

et avec
Code: Tout sélectionner
$lien_a_verifier = "http://example.com|http://example.com/annuaire/generaliste-p1-27.html";


rog
WRInaute accro
WRInaute accro
 
Messages: 1662
Inscription: Jeu Sep 21, 2006 2:32

Message le Ven Déc 07, 2007 5:02

si tous les liens sont dans ton tableau

tu peux verifier l'existence d'un element avec in_array

rog


Jeviensderio
WRInaute accro
WRInaute accro
 
Messages: 1340
Inscription: Ven Sep 29, 2006 12:50

Message le Ven Déc 07, 2007 10:22

L'erreur:

strncmp

et non pas srtncmp

Sorry!


tryan
WRInaute accro
WRInaute accro
 
Messages: 1536
Inscription: Dim Fév 20, 2005 14:14

Message le Ven Déc 07, 2007 18:37

Leonick: J'ai éssayé et sa ne fonctionne pas.
rog: Je me suis documenté sur in_array et éssayé d'ajouter cette fonction à mon code mais sans succès :? .
Jeviensderio:Avec strncmp je n'ai plus d'erreur mais sa ne fonctionne pas non plus.

Merci tout de meme.


rog
WRInaute accro
WRInaute accro
 
Messages: 1662
Inscription: Jeu Sep 21, 2006 2:32

Message le Ven Déc 07, 2007 18:50

je presume que tu as fait un print_r du du buffer retourné par le preg_match_all pour effectuer une verification manuelle si ta chaine est bien dedans ?

rog


tryan
WRInaute accro
WRInaute accro
 
Messages: 1536
Inscription: Dim Fév 20, 2005 14:14

Message le Ven Déc 07, 2007 20:29

rog a écrit:je presume que tu as fait un print_r du du buffer retourné par le preg_match_all pour effectuer une verification manuelle si ta chaine est bien dedans ?

rog


Faut pas présumer comme sa :lol: ! La, tu vient de me parler 100% extra terrestre.
Allez, direction www.manuelphp.com ...


Jeviensderio
WRInaute accro
WRInaute accro
 
Messages: 1340
Inscription: Ven Sep 29, 2006 12:50

Message le Ven Déc 07, 2007 20:33

Essayer:

Code: Tout sélectionner
$x = strlen("http://www.nomdusite.com");

if(strncmp($out[$i][1],$lien_a_verifier, $x) == 0)  $compte++;



Vérifier avant que $out[$i][1] contient bien l'url.
Noter aussi que le $ avait disparu avant le out.


rog
WRInaute accro
WRInaute accro
 
Messages: 1662
Inscription: Jeu Sep 21, 2006 2:32

Message le Ven Déc 07, 2007 21:26

me suis planté, le buffer n'est peut etre pas exploitable avec in_array

petite revision logique de ton script qui a l'air bien, mais si le but est de savoir si le lien existe et si l'on n'a pas besoin de savoir si il est répété, on peut le simplifier

<?php

$page_source = $res_infos['url_retour'];
$lien_a_verifier = "http://monsite.com/annuaire/generaliste-p1-27.html";

### on doit d'abord initialiser la variable avant de concatener
$chaine = '';

$fp=@fopen($page_source,"r");
if($fp) {
while(!feof($fp)) {
$chaine .= fgets($fp,1024);
}
}

$masque = '#href="(.*?)"#i';
preg_match_all("$masque",$chaine,$out,PREG_SET_ORDER);

### si il y a un match, il sera dans le premier element retourné, donc la boucle est inutile
### $out[0][0] doit donc contenir $chaine
### moi j'ai confiance en stristr

if(stristr($out[0][0],$lien_a_verifier) )
{
echo "Le lien sur <a href=$page_source target=_blank>$page_source</a> existe ";
}
else
{
echo 'pas de lien trouvé sur '.$page_source;

}
?>

FloBaoti
WRInaute passionné
WRInaute passionné
 
Messages: 684
Inscription: Dim Avr 30, 2006 18:42

Message le Ven Déc 07, 2007 21:35

rog a écrit:si l'on n'a pas besoin de savoir si il est répété, on peut le simplifier

preg_match_all est alors inutile, preg_match suffit.


rog
WRInaute accro
WRInaute accro
 
Messages: 1662
Inscription: Jeu Sep 21, 2006 2:32

Message le Ven Déc 07, 2007 21:38

exact

Comment detecter un lien dans une page distante

Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :

  • Test de lien (type de redirection)
    Cet outil vous permet de tester la validité d'un lien pour le référencement. Il vous indique la nature du lien (lien en dur, redirection bien gérée par les moteurs ou redirection mal gérée par les moteurs).
  • Calcul du taux de liens vers des pages internes
    Cet outil vous permet de calculer le taux de liens profonds vers un site web. Un lien profond est un lien qui ne pointe pas vers la page d'accueil mais au contraire vers une page interne du site. Les sites dont l'essentiel du référencement vient de leurs inscriptions dans des annuaires ont un taux de liens profonds faible ; à l'inverse, les sites de référence ont souvent un taux de liens profonds plus important, signe que leur contenu a suscité de nombreux liens spontanés.
  • Recherche de citations d'un site en texte brut
    Cet outil vous permet de trouver des pages citant votre site mais ne faisant pas (encore) de lien. Il suffira parfois d'un simple mail pour transformer cette simple citation en lien (backlink).


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités