Expression régulière : Petit problème

Résolu/Fermé
Alea - 11 mars 2006 à 17:14
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 11 mars 2006 à 17:50
Bonjour,
Alors voilà: Je suis en projet et je dois développer en php un automate pour le web.
J'ai appris très recemment qu'on pouvait utiliser les expressions régulières mais comme je n'y connait rien, même avec la doc php.net et des essais ben là ça marche pas la syntaxe que j'ai faite.
En fait je veux récupérer le "a name=#" d'un code html et j'arrive pas à mettre les bons paramètres pour que ça s'execute.

Voici mon code:

if (preg_match_all("/a.href=[.#]([a-z][A-Z][0-9][.])$/",$line,$r))
{
.....
}

(j'ai mis en gras ce qui me fait galérer...)

Merci d'avance pour votre aide!
A voir également:

7 réponses

lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
11 mars 2006 à 17:21
En général c'est bien de savoir la structure de texte pour pouvoir exploiter une regex

/a href="#[^"]+"/

Tu peux tester ici tes regex
http://www.annuaire-info.com/expression-reguliere.html

Je travaille avec perl et ses regex donc je ne sais pas les regex en php.
1
Euh petite précision: c'est le a href="#....." que je souhaite récupérer en fait. (en sachant qu'après le "#" il y a des caractères soit alphabétiques, soit numériques, soit les 2)
0
Merci beaucoup! Je vais voir ça...
Mais ça fait partie de la difficulté du truc de ne pas savoir à l'avance le texte qu'il y aura dans cette partie.
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
11 mars 2006 à 17:27
ça fait partie de la difficulté du truc de ne pas savoir à l'avance le texte qu'il y aura dans cette partie.

En général on utilise les regex pour trouver des correspondances (des motifs dans une chaîne de caractères) ou dans un test boolean.

Si m// correspond Alors

fait quelque chose

Dans ton cas tu veux récuperer de texte donc il faut savoir la structure de texte pour pouvoir exploiter mieux les regex. Et, crois moi que je ne dit pas comme ça pour parler.
0
Ben le problème c'est que je suis censée faire un automate.Qui dit automate dit automatique.
Cet automate peut analyser n'importe quel code html et le truc, c'est que ce qui est contenu dans "a href=#....", bah ça peut varier. C'est selon ce que le créateur du site aura marqué dedans.
Ya pas possibilité de dire en expression régulière de récupérer ce qu'il y a entre guillemets lorsque c'est après "a href"?
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
11 mars 2006 à 17:36
Re,

Ya pas possibilité de dire en expression régulière de récupérer ce qu'il y a entre guillemets lorsque c'est après "a href"?

Oui c'est ça que je t'ai donné. Maintenant je ne sais pas comment on fait les captures en php. En perl on utilise les ( )

a href="#[^"]+"

Ex pour perl

a href=("#[^"]+") la ( ) est capturé dans la variable $1
je vais traduire

trouve a suis d'un espace suis de h de r de e de f de = de " de # de tout caractère qui n'est pas " une fois minimum et " à la fin
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Ou sinon de dire de récuperer lorsqu'il y a --> a href="#
0
Arf ça marche pas, ya un problème au niveau des guillemets et des délimiteurs.
Pour les captures, en php si j'ai bien compris c'est avec la fonction preg match all, on met en paramètre un tableau et après, la fonction le remplit pour chaque élément trouvé (enfin je crois).
Mais là en fait j'ai testé et il ne reconnaît pas quand il y a plus de deux ", après il met en commentaires... j'ai testé avec ' mais je ne suis pas sûre que ça le prenne en compte car ça ne marche pas...
Enfin merci de toute aide en tout cas ^^
0
Ahhh mais si en fait ça marche! J'avais oublié de mettre les / au début et à la fin! Miracle, merci beaucoup!!!
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
11 mars 2006 à 17:50
Re,

je t'ai donné que la regex
a href="#[^"]+"
je suis désolé que j'ai oublié de te dire qu'il faut la mettre entre //

Donc /regex/

Si ça marche tant mieux, je suis content pour toi.
Avec les regex on peut faire des choses surprenantes.

Bonne continuation,

lami20j
0