En Perl : Récuperer un texte entre 2 balises [Fermé]

Signaler
Messages postés
52
Date d'inscription
vendredi 6 février 2004
Statut
Membre
Dernière intervention
28 mars 2006
-
Messages postés
2025
Date d'inscription
jeudi 22 septembre 2005
Statut
Membre
Dernière intervention
18 novembre 2015
-
Bonsoir, je souhaiterai connaitre le code en Perl permettant de récupérer un texte contenu entre 2 balises (HTML, PHP, ...).
Merci d'avance

4 réponses

Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 544
Salut,
#! /usr/bin/perl

use warnings;
@ARGV = qw (/home/lamitest/affich-2168110-en-perl-recuperer-un-texte-entre-2-balises.htm);

while (<>){
  /<([^>]*)>/;
print "$1\n";
}

____________________________________________________________
!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
html
head
META NAME="ROBOTS" content="index,follow"
META NAME="subject" content="Comment ça marche? [L'informatique] - <? echo Forum programmation ?
................................
...........................
Cependant ce n'est pas complet. Entre 2 balises on peut avoir des chaînes de caracteres entre " " entre ' ', on peut avoir aussi '>'.
Messages postés
2025
Date d'inscription
jeudi 22 septembre 2005
Statut
Membre
Dernière intervention
18 novembre 2015
203
entre 2 balises...
Moi la je comprends plutot : <test>ce qu'on veut lire </test>
Si c'est ca, le /<([^>]*)>/; devient :
/<[^>]+>([^<]+)</;


En tous cas, a voir, je ne sais plus si il ne faut pas mettre des \ avant les > et < .. a test
;D
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 544
Salut,

tu as raison. J'ai mal interpreté.

De toute façon c'est assez complexe.

Par exemple
<balise>a recuperer</balise><balise1>encore
à recuperer</bailse2><balise3>on a x < y à recuperer</balise3>



lami20j
Messages postés
2025
Date d'inscription
jeudi 22 septembre 2005
Statut
Membre
Dernière intervention
18 novembre 2015
203 >
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019

<balise3>on a x < y à recuperer</balise3>
j'avoue ce cas la est bien relou..
Mais je pense qu'il y a p'tet moyen en mettant un
/\<[^\>]+\>([^{\<\/}]+)\<\//;

je ne suis plus bien sur des {} poir définir un ensemble de caractères...
et j'ai remis les \ devant les < et > car il les faut...
mais c'est a voir
-
Zep3k!GnO
On est des rangers mec, des rangers...
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 544
Re,

c'est pour ça que c'est complex.
Entre les balises et à l'intérieur des balises on peut avoir n'importe quoi ou presque.

Donc personnellement quand je travaille avec du texte brut je préfère regarder la structure de texte et de ne pas travailler à l'aveugle.

Pour les cas que tu as imagine ta regex doit fonctionner, en revanche elle ne va pas fonctionner dans les cas dont tu n'as pas penser.

Bonne soirée,

lami20j
Messages postés
2025
Date d'inscription
jeudi 22 septembre 2005
Statut
Membre
Dernière intervention
18 novembre 2015
203
en revanche elle ne va pas fonctionner dans les cas dont tu n'as pas penser.
normal :D je l'ai faite en speed, comme ça..(sans trop y réfléchir 3 piges.. j'avoue :P )
Aller, bonne journée, @+