Page 1 sur 1

Recherches de motifs

Posté : 19 juin 2008, 21:28
par Skualys
Bonsoir ^^

Je cherche une fonction permettant de lister dans un array toutes les occurences d'un motif d'une chaîne (comme ereg, mais pour toutes les occurences), avec le support des caractères multi octaux si possible.

Quelqu'un aurait une piste ?

Posté : 19 juin 2008, 21:38
par Calimero
Bonjour,

preg_match_all() avec utf8_decode() ?

Posté : 19 juin 2008, 21:44
par Skualys
Bonjour,

preg_match_all() avec utf8_decode() ?
Je te remercie pour ta réponse ;) mais j'obtiens une erreur, mon regex ne doit pas être juste :
preg_match_all("[A-Z]{4}",utf8_decode($fichier),$tab,PREG_SET_ORDER,PREG_OFFSET_CAPTURE);
et j'obtiens l'erreur suivante : Unknow modifier '{' ... pourtant cela fonctionnait avec ereg.

Posté : 19 juin 2008, 22:00
par Calimero
C'est presque ça :) il te manquait juste les caractères délimiteurs de l'expression régulière (je t'ai mis des /) et de composer ensemble les deux flags que tu veux avec un OU logique ( | ) :
preg_match_all("/[A-Z]{4}/",utf8_decode($fichier),$tab,PREG_SET_ORDER|PREG_OFFSET_CAPTURE);

Posté : 19 juin 2008, 22:12
par Skualys
C'est presque ça :) il te manquait juste les caractères délimiteurs de l'expression régulière (je t'ai mis des /) et de composer ensemble les deux flags que tu veux avec un OU logique ( | ) :
preg_match_all("/[A-Z]{4}/",utf8_decode($fichier),$tab,PREG_SET_ORDER|PREG_OFFSET_CAPTURE);
Merci beaucoup :D (pourquoi cette différence entre ereg et preg_match au fait ?)

Posté : 19 juin 2008, 23:37
par AB

Merci beaucoup :D (pourquoi cette différence entre ereg et preg_match au fait ?)
Parce que ce n'est pas basé sur le même langage : ereg = POSIX, et preg_match = PCRE
Il y a d'autres petites différences. Mais dans tous les cas il est préférable d'oublier POSIX (excepté à l'intérieur d'une requête mysql).