Page 1 sur 1

REGEX - Récupérer contenu entre balises HTML

Posté : 30 oct. 2008, 22:38
par supercanard
Bonsoir,

J'essaye de récupérer du contenu html entre les balises <body> mais rien à faire.
J'ai pourtant l'impression que mon masque est bon ?
preg_match( '#<body>(.*?)</body>#', $test, $matches );
Le contenu de $test est le résultat de file_get_contents()
Je ne sais pas si il peut y avoir un rapport ?

Posté : 31 oct. 2008, 11:04
par Berzemus
J'utiliserais plutôt un lookahead et un lookbehind, qui vérifient si une certaine chaine se trouve bien avant et derrière ce qu'on recherche:

Code : Tout sélectionner

(?<=<body>)(.*)(?=</body>)
Je pense aussi qu'il va falloir spécifier le paramètre "s", pour que tout le texte que tu comptes vérifier soit interprété comme une seule ligne: en fait, les expressions régulières ne fonctionnent que par ligne.

Posté : 31 oct. 2008, 19:04
par supercanard
Merci bien,
J'ai pas tout compris le masque je vais essayer de l'analyser ;)

Autre question bête, si je veut lui ajouter en plus du paramètre s, le paramètre i pour que ce soit insensible à la casse, c'est possible ?
'#<body>(.*?)</body>#si'
<= ça n'a pas l'air bon, mais pas d'erreur par contre

Posté : 01 nov. 2008, 00:17
par Berzemus
Oui, les modificateurs sont cumulables.

Pour le lookahead et lookbehind, j'ai pas vérifié leur fonctionnement sous php, mais théoriquement ils devraient fonctionner.

Posté : 01 nov. 2008, 01:13
par supercanard
En fait oui ça marche bien ^^