Problème avec preg_match_all [Résolu]

Signaler
Messages postés
154
Date d'inscription
samedi 7 janvier 2006
Statut
Membre
Dernière intervention
28 septembre 2008
-
Messages postés
95
Date d'inscription
jeudi 22 avril 2004
Statut
Membre
Dernière intervention
28 avril 2009
-
Bonjour

Je comptais utiliser la fonction preg_match_all afin d'extraire d'une chaine caractère les sous chaines contenues entre 2 balises ([yt] et  /yt)

Cependant, lorsque je regarde l'aide de preg_match_all (ici :http://fr3.php.net/preg_match_all) je ne parviens pas à comprendre comment construire le |<[^>]+>(.*)</[^>]+>|U de l'exemple

merci d'avance :)

6 réponses

Messages postés
95
Date d'inscription
jeudi 22 avril 2004
Statut
Membre
Dernière intervention
28 avril 2009

>>1.
C'est le "language" regex (expressions régulières)
|\[yt\](.*)\/yt\|U
- le délimiteur > |  |     (ce que tu veux, identique)
- l'option de recherche > U     (option non gourmande, elle ne prendra que le 1er renvoi ou aucun)
- echaper les caractères spéciaux > \[     (les caractères spéciaux de la famille des regex doivent être échapés par un antislashe, tel que [, ], ?, +, *,... [ et ] servent à définir une classe de caractère donc on les échape)
- ici la chaine à trouver se situe entre [yt] et /yt, on y place donc a l'intérieur une paire de parenthese avec la commande .* qui veux dire tout et n'importe quoi 0 ou plusieur fois (et grace à ton option U, ça s'arretera à la 1er fois au pire, pil poil ce que tu désire donc)
Je te conseil de chercher un peu dans google pr en savoir plus sur les regex.

>>2.
Tjrs d'après le 1er exemple http://fr3.php.net/preg_match_all
un simple count($out); devrait suffir
Messages postés
95
Date d'inscription
jeudi 22 avril 2004
Statut
Membre
Dernière intervention
28 avril 2009

test voir ça :

|\[yt\](.*)\/yt\|U
 
Messages postés
154
Date d'inscription
samedi 7 janvier 2006
Statut
Membre
Dernière intervention
28 septembre 2008

merci, cela fonctionne

j'aimerais cependant savoir deux choses :
1. Comment avez vous trouvé ?? :)
2. Comment faire pour trouver le nombre de remplacements fait par preg_match_all ?
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
39
salut

preg_match_all ne fait pas de remplacements...

http://fr2.php.net/preg_replace

t'as la reponse dans les 5 premieres lignes.
Messages postés
95
Date d'inscription
jeudi 22 avril 2004
Statut
Membre
Dernière intervention
28 avril 2009

preg_match, preg_match_all, tout dépend de ce que tu veux faire.
Messages postés
95
Date d'inscription
jeudi 22 avril 2004
Statut
Membre
Dernière intervention
28 avril 2009

euh...

preg_match, preg_replace