Forum > PHP > Problème RegEx pour trouver un lien

Problème RegEx pour trouver un lien

ok Le problème posé sur ce sujet a été résolu.
avatar de stc
Membre
# Le 12/05/2009 à 14h08
Salut, j'ai un problème avec ma regex que j'utilise afin de trouver un lien hypertexte dans une page Web (du style <a href="index.php" ...).
Alors voila le code:
  1. $nb_adress=preg_match_all('/^(<a.+href=")(.[^" ])+(" )$/',$datas,$array_adress_found,PREG_SET_ORDER);

Et bien sur $nb_adress me renvoie toujours zéro résultat.
En fait, voila comment je procède je cherche en début (<a...href="), après je cherche n'importe quel caractère sauf "+espace puis a la fin "+espace.
Mais ça marche pas.
Je suis pas très fort en regex alors si quelqu'un peut me dire où est mon erreur ..
Tchao merci
avatar de stc
Membre
# Le 12/05/2009 à 16h26
Bon j'ai un peu avancé, à savoir j'ai changé la regex:
  1. $nb_adress=preg_match_all('/<a.+href=".[^" ]+" /',$datas,$array_adress_found,PREG_SET_ORDER);

Mais maintenant j'ai un autre problème, il me trouve qu'une seule adresse même quand il y en a une moultitude!
avatar de Tony_
Administrateur
# Le 12/05/2009 à 17h07
Bonjour.
Bien joué pour le regex.
Hum, s'il te trouve une seule adresse, s'agit-il de la première adresse ou de la dernière?

Pour prendre toutes les adresses, il faut que $nb_adress soit un tableau à l'intérieur d'une boucle. Peut-tu fournir le reste du code?

Soit dit en passant je rajouterais un "U" à la fin de ton regex actuel, soit:
Code:
/<a.+href=".[^" ]+" /U

Le U permet d'être peu gourmand. C'est utile lorsqu'il y a deux liens à la suite pour que le regex attrape seulement la première partie.
N'hésitez pas à consulter le dossier référencement. smiley
Sinon hors internet je suis développeur web PHP.
avatar de stc
Membre
# Le 12/05/2009 à 17h13
En fait, j'ai trouvé la regex (on m'en à soufflé la plus grosse partie) mais bon faut faire profiter alors voila:
  1. $nb_adress=preg_match_all('/<a href="(.+)"/isU',$datas,$array_adress_found);

Quant à $nb_adress, ça fourni le nombre de résultat. Le résultat se retrouve dans $array_adress_found qui est un tableau de tableau. Les liens extraient (sous la forme (<a href="index.php") se trouvent eux dans le tableaux $array_adress_found[0]
($array_adress_found[0][0] $array_adress_found[0][1] .. $array_adress_found[0][n]
Voila!
avatar de Tony_
Administrateur
# Le 12/05/2009 à 17h15
Bien joué. Et merci de faire profiter. smiley
N'hésitez pas à consulter le dossier référencement. smiley
Sinon hors internet je suis développeur web PHP.