lol74 Posté 30 Septembre 2005 Partager Posté 30 Septembre 2005 Bonjour, Je sollicite l'aide des regex gourous du forum! Le problème: je souhaite extraire dans du html un pattern présent plusieurs fois. je n'arrive pas à formuler la regex qui me donne la partie entre O et X contenant S . En fait , s'il y a des parties O .... X ne contenant pas S , j'ai une imbrication. cf ci dessous <?php $buff=" <br>1 khkjh dfgkhkjhk kjhfdjhdgjh O lkjlkj lkjlkj lkj lkj X <br>2 kdsflkjdfl O kljlkjsdlksjflkjf dsfs1X <br>3 zoipoip O lkjlj S dadsdfsf X <br>4 fgdgruj O lkjlj S dadsdfsf X <br>5 kdsflkjdfl O kljlkjsdlksjflkjf dsfs1 X <br>6 akdsflkjdfl O kljlkjwerr 231 kjf dsfs1 X <br>7 asdasddasd"; echo "$buff<br><br>"; $Pattern= "!O(.+)[^O](.+)[S](.+)X!sU"; $buff2=preg_replace($Pattern, "O-S-X", $buff); $buff=$buff2; echo $buff; ?> j'obtiens (en rouge la gourmandise!): ceci 1 khkjh dfgkhkjhk kjhfdjhdgjh O lkjlkj lkjlkj lkj lkj X 2 kdsflkjdfl O kljlkjsdlksjflkjf dsfs1X 3 zoipoip O lkjlj S dadsdfsf X 4 fgdgruj O lkjlj S dadsdfsf X 5 kdsflkjdfl O kljlkjsdlksjflkjf dsfs1 X 6 akdsflkjdfl O kljlkjwerr 231 kjf dsfs1 X 7 asdasddasd devient 1 khkjh dfgkhkjhk kjhfdjhdgjh O-S-X 4 fgdgruj O-S-X 5 kdsflkjdfl O-S-X 6 akdsflkjdfl O-S-X 7 asdasddasd au lieu de 1 khkjh dfgkhkjhk kjhfdjhdgjh O lkjlkj lkjlkj lkj lkj X 2 kdsflkjdfl O kljlkjsdlksjflkjf dsfs1X 3 zoipoip O-S-X 4 fgdgruj O-S-X 5 kdsflkjdfl O kljlkjsdlksjflkjf dsfs1 X 6 akdsflkjdfl O kljlkjwerr 231 kjf dsfs1 X 7 asdasddasd Merci de votre aide. A+ Lien vers le commentaire Partager sur d’autres sites More sharing options...
Dan Posté 30 Septembre 2005 Partager Posté 30 Septembre 2005 Salut et bienvenue à bord... Remplace ton $Pattern par $Pattern= "!O[^OX]+S[^O]+X!sU"; qui veut dire: un Osuivi d'un ou plusieurs caractères différents de O ou X suivi d'un S suivi d'un ou plusieurs caractères différents de O suivi d'un X Dan Lien vers le commentaire Partager sur d’autres sites More sharing options...
lol74 Posté 30 Septembre 2005 Auteur Partager Posté 30 Septembre 2005 Merci DAN, Nickel J'ai remarqué que souvent les REGEX sont définies pour des suites de caractères, et si au lieu des caractères O S et X, on a START MIDDLE et END On fait quoi ? Pour l'instant, je convertis START, MIDDLE et END en caractères\xA9 \xAA \xAB (non utilisés dans des pages web) pour pouvoir travailler au niveau caractère mais si tu as une solution plus élégante, je suis preneur. Merci encore Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant