OVH Cloud OVH Cloud

selection string entre ces balises

5 réponses
Avatar
Francois Bouchet
Je m'occupe d'un site qui a une sorte de dictionnaire de mots.

Dans les textes, ces mots sont entourés dans les balises <z></z>.

Je voudrais pouvoir extraire ces mots. J'ai cherché un peu mais la
fonction explode() ne prends qu'une seule chaîne de caractères si je ne
m'abuse...

Il peut y avoir plusieurs de ces mots dans un texte.

Merci de vos lumières...

François

5 réponses

Avatar
Cedric
Je voudrais pouvoir extraire ces mots. J'ai cherché un peu mais la
fonction explode() ne prends qu'une seule chaîne de caractères si je ne
m'abuse...


Si tu vois qu'avec explode tu pourrais faire ton script, ben fait deux
explode à la suite un pour chaque chaine....

Avatar
P'tit Marcel
Francois Bouchet écrivit:

Je m'occupe d'un site qui a une sorte de dictionnaire de mots.

Dans les textes, ces mots sont entourés dans les balises <z></z>.

Je voudrais pouvoir extraire ces mots.

Il peut y avoir plusieurs de ces mots dans un texte.



preg_match_all('`<z>(.*)</z>`Us',$texte,$reg)


eça
--
P'tit Marcel
statistiques sur les forums modérés : http://www.centrale-lyon.org/ng/

Avatar
G-raph
preg_match_all('`<z>(.*)</z>`Us',$texte,$reg)


Dans le cas où il y a plusieurs <z>blabla</z>, il me semble que cette
expression englobera le premier "<z>" et le dernier "</z>" du texte,
ignorant les couples de balises similaires, n'est il pas ?

Avatar
Francois Bouchet
P'tit Marcel wrote:

preg_match_all('`<z>(.*)</z>`Us',$texte,$reg)


Merci, ça a l'air de marcher... faut que je me dépatouille avec d'autres
problemes maintenant ;-) (dur apprentissage du newbie...)

par contre je comprends pas trop le Us que tu as inséré après les
balises... Une explication ?

Merci beaucoup à tous,

François

Avatar
P'tit Marcel
Francois_Bouchet écrivit:

preg_match_all('`<z>(.*)</z>`Us',$texte,$reg)


Merci, ça a l'air de marcher... faut que je me dépatouille avec d'autres
problemes maintenant ;-) (dur apprentissage du newbie...)

par contre je comprends pas trop le Us que tu as inséré après les
balises... Une explication ?


Ce sont deux modificateurs de masque :
U :
Ungreedy (non-gourmand). Grâce à ça, la séquence .* sera appliquée a
minima. Sans cela, <z>toto</z><z>titi</z> sera capturé d'un seul coup:
toto</z><z>titi.
ça répond à la question de "G-raph"

s : le masque marche même si <z> et </z> sont sur des lignes différentes

Voir la doc :
http://fr.php.net/manual/fr/pcre.pattern.modifiers.php


Les expressions régulières PCRE permettent une foultitude de tests ou de
remplacements, ce n'est pas du temps perdu que de lire en détail le
chapitre de la doc qui les décrivent.


eça
--
P'tit Marcel
statistiques sur les forums modérés : http://www.centrale-lyon.org/ng/