Expression reguliere récuperer ses backlinks

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par eskimo, 2 Mai 2013.

  1. eskimo
    eskimo WRInaute discret
    Inscrit:
    21 Octobre 2007
    Messages:
    198
    J'aime reçus:
    0
    Hello,
    J'ai réalisé il y a quelques temps un petit script qui me permet d'aller vérifier si mes BL sont bien présents chez mes partenaires.
    Je souhaite le faire évoluer en récupérant l'ancre du lien (ou le code du lien en entier) sauf que je n'ai jamais été très avec les expressions régulières.

    J'ai tenté quelque chose comme ceci pour parer à toutes les éventualité (attribut target rel etc...)

    Code:
    $lien='|<a href=(.*)'.$url.'(.*)</a>|'; 
    preg_match($lien,$mystring,$out,PREG_PATTERN_ORDER); 
    Sans succès... ça me sort des trucs bizarres ... plusieurs liens en même temps parfois (par ce que la balise </a> est collé au reste du code - pas d'espace)
    Si un crack des ER est dans le coin :)
    Merci
     
  2. zeb
    zeb WRInaute accro
    Inscrit:
    5 Décembre 2004
    Messages:
    12 190
    J'aime reçus:
    1
    Faudrait que tu collecte les liens que tu risque de rencontrer car c'est difficile de répondre sans voir les cas.
    en tous cas moi je partirait vers un truc qui cherche entre ton nom de domaine (ou url) et la fermante </a> en limitant le nombre de caractère pour éviter de choper plusieurs liens.

    Un truc du genre "#$url.{1,100}</a#si" ("si" pour être indépendant de la casse et passer les éventuels saut de ligne / caractère spéciaux)
    Un fois le motif appliqué et la chaine récupéré je ferait un second traitement pour se débarrasser du "</a" final et ensuite un autre pour dégager tout ce qui est avant le ">" qui se trouve fatalement devant l'anchor que tu cherche.
    Pour quoi cette approche fractionnée ? > car tu va fatalement avoir des target truc, class machin, href en début ou en fin etc ... Les deux seuls constantes c'est la fermante de lien et l'url.

    D'ailleurs je me demande si il y a pas moyen d'extraire tout depuis l'url jusqu’à "<" en excluant justement "<" (ce qui éviterait de devoir présumer une taille) genre : "#$url[.^<]#si"
     
  3. eskimo
    eskimo WRInaute discret
    Inscrit:
    21 Octobre 2007
    Messages:
    198
    J'aime reçus:
    0
    Salut Zeb,
    merci pour ton retour.
    J'ai continué à travailler après avoir poster ... et j'arrive plus au moins à quelque chose qui ressemble à ce que tu propose ( en beaucoup moins bien).
    Je vais corriger et continuer de coder en suivant tes remarques.
    Merci encore
     
  4. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    9 077
    J'aime reçus:
    295
    C'est un peu useless de checker comme ça:
    PHP:
    <span class="syntaxdefault"><br /></span><span class="syntaxkeyword"><!--<br /><</span><span class="syntaxdefault">a&nbsp;href</span><span class="syntaxkeyword">=</span><span class="syntaxstring">"http://example.com/"</span><span class="syntaxkeyword">></span><span class="syntaxdefault">Example</span><span class="syntaxkeyword"></</span><span class="syntaxdefault">a</span><span class="syntaxkeyword">><br />--><br />&nbsp;</span><span class="syntaxdefault"></span>
     
  5. indigene
    indigene WRInaute accro
    Inscrit:
    7 Septembre 2003
    Messages:
    4 162
    J'aime reçus:
    174
    Voici ce que j'utilise pour extraire le title d'une page :

    Code:
                             //recherche du titre sans tenir compte de la casse
             if (eregi("<title>(.*)</title>",$page,$regs))
                { $title = $regs[1];
    
                             //il arrive qu'il ne s'arrete pas au </title> va savoir pourquoi. on le recherche à la mimine
                  $title2 = strtolower($title);
                  $pos1 = strpos($title2,"</title>");
                  if ($pos1 > 0) {
                      $title = substr($title, 0 , $pos1);
                      }
                }
    
    Je suppose qu'on peut facilement l'adapter à un lien dont on connait l'url pour trouver l'ancre.

    exemple non testé (je me suis peut-être planté dans le code, c'est juste pour donner des pistes) :

    Code:
                             //recherche du l'ancre d'un lien
             if (eregi("<a (.*)".$url."(.*)>(.*)</a>",$page,$regs))
                { $ancre = $regs[3];
    
                             //il arrive qu'il ne s'arrete pas au </a> va savoir pourquoi. on le recherche à la mimine
                  $ancre2 = strtolower($ancre);
                  $pos1 = strpos($ancre2,"</a>");
                  if ($pos1 > 0) {
                      $ancre = substr($ancre, 0 , $pos1);
                      }
                }
    
     
  6. zeb
    zeb WRInaute accro
    Inscrit:
    5 Décembre 2004
    Messages:
    12 190
    J'aime reçus:
    1
    Regarde si tu as pas des caractère spéciaux genre saut de ligne ou tabulation qui viennent foutre le bronx dans le motif dans ces moments là.
    Sinon attention la famille "ereg" est asbeen tu devrais penser "preg" pour l'avenir.
     
Chargement...
Similar Threads - Expression reguliere récuperer Forum Date
Une expression régulière pour la home et un sous répertoire ? Google Analytics 22 Juin 2016
problème avec expression regulière en java Développement d'un site Web ou d'une appli mobile 21 Août 2015
PHP Expressions Régulières ! Modifier plusieurs occurences Développement d'un site Web ou d'une appli mobile 5 Août 2015
Création d'objectif et expression régulière analytics Google Analytics 15 Janvier 2015
Expression régulière Objectif Google Analytics 1 Février 2014
Expression régulière : extraire une chaine variable d'une chaine Développement d'un site Web ou d'une appli mobile 4 Septembre 2012
Expressions régulières début et fin de mot Développement d'un site Web ou d'une appli mobile 11 Août 2012
Expression régulière en objectif Google Analytics 31 Mai 2012
Expressions régulières et filtre Google Analytics Google Analytics 18 Avril 2012
Expressions régulières entonnoir de conversion Google Analytics 3 Février 2012