PHP - identification d'url

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

Gill's
Nouveau WRInaute
 
Messages: 9
Inscription: Mar Jan 03, 2006 5:09

PHP - identification d'url

Message le Ven Aoû 24, 2007 21:54

Le code dans lequel je cherche mon expression est du type :

<h2 class=classe1><a href="http://www.site.com/gabarit.php?cat=cat1&f=3">ma page</a></h2><h2 class=classe1><a href="http://www.site.com/gabarit.php?cat=cat1&f=2">ma page 2</a></h2> etc...

Comme vous le voyez, le code n'est pas formaté ligne par ligne, tout se suit.

Je voudrais pouvoir identifier chaque url :

<a href="http://www.site.com/gabarit.php?cat=cat1&f=3">ma page</a>

Comment je fais pour que mon identification s'arete a chaque balise </a> pour pouvoir ensuite afficher toutes les chaines trouvées ?

j'ai fais ca mais ca ne marche pas :

preg_match_all('/\<a href="(.*)(www.site.com)+(.*?)(<\/a>)+/Ui',$file_contents,$out);

la chaine semble ne pas s'areter a chaque </a> trouvé, mais plutot au tout dernier </a> trouvé dans l'ensemble du code.

comment faire ?

Merci !

Didier_S
WRInaute passionné
WRInaute passionné
 
Messages: 563
Inscription: Mar Aoû 24, 2004 22:25

Message le Sam Aoû 25, 2007 10:09

essaie avec (.*?) à la place de (.*)
(merci ecocentric)

Gill's
Nouveau WRInaute
 
Messages: 9
Inscription: Mar Jan 03, 2006 5:09

Message le Sam Aoû 25, 2007 10:52

j'ai testé, mais ca ne fonctionne toujours pas :

preg_match_all('/\<a href="(.*?)(www.site.com)+(.*?)(<\/a>)+/Ui',$file_contents,$out);


L'identification va toujours jusqu'au dernier </a> trouvé dans tout le code, pas le premier rencontré après "www.site.com".

Hors je voudrais pouvoir identifier chaque lien, 1 par 1.

A+


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

Message le Sam Aoû 25, 2007 14:03

heu, pourquoi *? ça fait doublon, non ?
il faut plutôt remplacer (.*) par ([^>]*) et ça fonctionnera


sunflower
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 121
Inscription: Jeu Jan 05, 2006 20:09

Message le Sam Aoû 25, 2007 14:58

Gill's a écrit:preg_match_all('/\<a href="(.*?)(www.site.com)+(.*?)(<\/a>)+/Ui',$file_contents,$out);


L'identification va toujours jusqu'au dernier </a> trouvé dans tout le code, pas le premier rencontré après "www.site.com".

Hors je voudrais pouvoir identifier chaque lien, 1 par 1.


Plutôt une regexp comme ça?

'(<a href="(https?)://www.site.com([^"]*)[^<]*</a>)'

matche pas les sous-domaines de :www.site.com ni les liens relatifs (et que le protocole http|https)

Les backreferences devraient te donner le mode http|https, la query string, et la balise entière de <a> à </a>

Bon courage avec les regexp ;)


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 :



Qui est en ligne

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