[PHP REGEXP]Interdire un motif ?
Résolu
Bonjour,
je cherche à récupérer, via un script PHP, les liens hypertextes d'une page HTML et plus précisement le href et le code contenu entre les balises.
Par exemple dans <a href="url">texte cliquable</a> je veux extraire "url" et "texte cliquable".
J'utilise donc les expressions régulières et ça marche dans la plus part des cas avec ça :
preg_match_all('/<a([^>])*href="([^"]+)"([^>])*>(.*)<\/a>/',$html_categorie,$results);
Seulement il peut y avoir plusieurs liens par ligne et là ça ne marche plus, ça ne trouve plus qu'un seul lien commençant par la première balise "<a" et se terminant par la dernière balise "</a>".
J'essaye d'interdire la présence de la balise "</a>" dans le texte cliquable avec une expression de ce style mais ça marche pas :
preg_match_all('/<a([^>])*href="([^"]+)"([^>])*>([^\(<\/a\)]*)<\/a>/',$html_categorie,$results);
Comment interdire un motif et pas seulement un caractère ou une classe ?
Merci d'avance.
je cherche à récupérer, via un script PHP, les liens hypertextes d'une page HTML et plus précisement le href et le code contenu entre les balises.
Par exemple dans <a href="url">texte cliquable</a> je veux extraire "url" et "texte cliquable".
J'utilise donc les expressions régulières et ça marche dans la plus part des cas avec ça :
preg_match_all('/<a([^>])*href="([^"]+)"([^>])*>(.*)<\/a>/',$html_categorie,$results);
Seulement il peut y avoir plusieurs liens par ligne et là ça ne marche plus, ça ne trouve plus qu'un seul lien commençant par la première balise "<a" et se terminant par la dernière balise "</a>".
J'essaye d'interdire la présence de la balise "</a>" dans le texte cliquable avec une expression de ce style mais ça marche pas :
preg_match_all('/<a([^>])*href="([^"]+)"([^>])*>([^\(<\/a\)]*)<\/a>/',$html_categorie,$results);
Comment interdire un motif et pas seulement un caractère ou une classe ?
Merci d'avance.
A voir également:
- [PHP REGEXP]Interdire un motif ?
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- L'administrateur système a configuré la politique de votre système pour interdire cette installation ✓ - Forum Virus
- Convocation police sans motif - forum - Forum Vos droits sur internet
- Alert php ✓ - Forum PHP
3 réponses
Il y a une petite astuce : .*? permet de s'arrêter à la première occurence d'un motif, ainsi, il suffit de faire ceci :
J'ai également ajouté les drapeaux i (insensible à la casse) et s (parenthèses capturantes).
On pourrait aussi ajouter m pour que le motif fonctionne sur plusieurs lignes !
preg_match_all('/<a.*?href=".*?)".*?>( .*?)<\/a>/is',$html_categorie,$results);
J'ai également ajouté les drapeaux i (insensible à la casse) et s (parenthèses capturantes).
On pourrait aussi ajouter m pour que le motif fonctionne sur plusieurs lignes !
Jean-François Pillou
Fondateur de CommentCaMarche.net