Se connecter avec
S'enregistrer | Connectez-vous

PHP -> détection balises HTML avec les REGEX

Dernière réponse : dans Programmation

Salut à tous, :sol: 

Le but de mon script PHP est (dans un premier temps) d'extraire tous les "href" de toutes les balises <a></a> d'une page HTML quelconque.
Pour cela j'ai écrit ce motif regex :

$masque="<a([^>]*)>([^<]*)</a>";

en faisant comme ça je récupère quasiment tous les <a> mais certains résistent !!

Par exemple celui-la :
<a href="http://truc.bidule"><b>truc.bidule</b></a>

Je vois bien ou est le probleme, mais je ne vois vraiment pas de solution car si je fais ça :

$masque="<a([^>]*)>(.*)</a>";

ce n'est pas satisfaisant non plus...

Bon voila, j'espère que j'ai été assez clair et je remercie d'avance toute personne bien intentionnée qui daignera répondre à ma question

Lassé par la pub ? Créez un compte

C'est vraiment sympa de ta part de m'aider mais là ça a pas l'air de faire l'affaire...
Le problème c'est que la plupart des pages sur le web ne sont pas valides W3C et de ce fait il arrive qu'il n'y ai pas de " ou de ' autour du href et dans ce cas là : ça marche pas !
Mais de toute façon mon problème se situe juste avant : </a> ...
Toi tu mets (.*) mais si je mets ça : ça déconne ! Je suis obligé de faire un truc du genre ([^<]*), le prob c que si il y a des balises dedans ça déconne aussi :( 
En tous cas merci pour ta réponse ça fait plaisir :bounce: 

Yo ! ;) 

matadore j'ai le même problème que toi mais j'ai toujours pas trouvé de solution !
Sinon KangOl ton motif peut poser problème car si on a :

<a href="http://truc.bidule"><b>truc.bidule</b></a>blabla<a href="http://bidule.chouette"><b>bidule.chouette</b></a>

Il pourrait considerer :
<a $1>$2</a>

Avec $2 = <b>truc.bidule</b></a>blabla<a href="http://bidule.chouette"><b>bidule.chouette</b>

Je continue de chercher puis si je trouve je vous fais signe ^^

Au debut j'étais tenter de faire :
  1. $masque="<a([^>]*)>[^</a>]*</a>";


Mais je ne sais pas comment on exclue un groupe de caractères :p 
Lassé par la pub ? Créez un compte