lol74 Posté 30 Septembre 2005 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+
Dan Posté 30 Septembre 2005 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
lol74 Posté 30 Septembre 2005 Auteur 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
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant