Forum > PHP > Probleme RegEx

Probleme RegEx

ok Le problème posé sur ce sujet a été résolu.
Auteurs Messages
Page : 1
icone offline stc # Posté le 12/05/2009 à 14h08
avatar de stc
Rang: membre
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:
Code:
$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
icone offline stc # Posté le 12/05/2009 à 16h26
avatar de stc
Rang: membre
Bon j'ai un peu avancé, à savoir j'ai changé la regex:
Code:
$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!
icone online funnycat # Posté le 12/05/2009 à 17h07
avatar de funnycat
Rang: administrateur
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.
Ma page préférée? Le dossier référencement qui présente une multitude d'informations utiles. smiley
Sinon hors internet je suis développeur web PHP.
icone offline stc # Posté le 12/05/2009 à 17h13
avatar de stc
Rang: membre
En fait, j'ai trouvé la regex (on m'en à soufflé la plus grosse partie) mais bon faut faire profiter alors voila:
Code:
$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!
icone online funnycat # Posté le 12/05/2009 à 17h15
avatar de funnycat
Rang: administrateur
Bien joué. Et merci de faire profiter. smiley
Ma page préférée? Le dossier référencement qui présente une multitude d'informations utiles. smiley
Sinon hors internet je suis développeur web PHP.
Page : 1