|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : novembre 2006 Messages : 9 ![]() |
Bonjour à tous.
J'essaie depuis qq tps d'écrire une expression reguliere me permettant de rechercher une certaine suite logique ds une suite de nombre. Je voudrais en fait trouver une suite commençant par 08 suivie de 14 chiffres et enfin 5 chiffres quelconques apres cette suite. Cette suite logique peut se repeter jusqu'à 2 fois ds ma suite de nombre et peut aussi ne pas apparaitre. Voici un exemple permettant de mieux comprendre : suite de nbre : 156489531082154687945638975413256898765 suite logique recherchée :0821546879456389 75413 voici mon expression : Code :
$expression = '(08[0-9]{14})([0-9]{5})?((08[0-9]{14})([0-9]{5})?)?' Code :
ereg($expression,$suite_de_nbre,$code); et des fois $code[4]et $code[5] sont vides alors qu'ils devraient être remplies. D'où vient le pb? Merci pour votre aide. |
|
|
00
|
|
|
#2 |
|
Membre chevronné
![]() Étudiant Inscription : août 2005 Messages : 632 ![]() |
Euh c'est quoi exactement ce que tu recherches ?
avec preg_replace tu peux faire ça. Apres il faut voir ce que tu veux recuperer, par quoi tu veux remplacer etc... |
|
|
00
|
|
|
#3 | ||||
|
Membre chevronné
![]() Inscription : mars 2002 Messages : 611 ![]() |
Je viens de faire un essai avec preg_match :
Code :
Code :
|
||||
|
|
00
|
|
|
#4 | |||||
|
Invité de passage
![]() Inscription : novembre 2006 Messages : 9 ![]() |
Citation:
exemple avec une suite de nbre contenant 2 suites logiques : 15608149735648926499742368456329870816935468795643216549875651 |
|||||
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : novembre 2006 Messages : 9 ![]() |
|
|
|
00
|
|
|
#6 | ||
|
Membre chevronné
![]() Inscription : février 2005 Messages : 671 ![]() |
Hello,
Et si tu remplaces preg_match par preg_match_all Ensuite tu accedes comme ceci : Code :
cadou
__________________
PHP Competition System Script de gestion de coupes et championnats http://phpcompet.free.fr Mon jeu de foot |
||
|
|
00
|
|
|
#7 | |||||||
|
Invité de passage
![]() Inscription : novembre 2006 Messages : 9 ![]() |
Citation:
Le pb apparait lorsque ma suite de nb est trop longue. En reprenant l'exemple au dessus je devrais avoir ce genre de résultat : Code :
Code :
Merci pour votre aide. |
|||||||
|
|
00
|
|
|
#8 | ||||
|
Membre chevronné
![]() Inscription : mars 2002 Messages : 611 ![]() |
Je comprends pas trop où est le problème !
Si sur l'exemple que je t'ai fourni, tu remplaces preg_match par preg_match_all : Code :
Code :
|
||||
|
|
00
|
|
|
#9 |
|
Invité de passage
![]() Inscription : novembre 2006 Messages : 9 ![]() |
Ok j'essaie et je vous tiens au courant.
|
|
|
00
|
|
|
#10 |
|
Invité de passage
![]() Inscription : novembre 2006 Messages : 9 ![]() |
Merci, ça marche nickel avec preg_match_all
![]() Bonne continuation et à bientot PS: juste une petite question (dsl mais j'ai pas trouvé ds mes recherches); j'avais utilisé cette expression '(08[0-9]{14})([0-9]{5})?((08[0-9]{14})([0-9]{5})?)?' et apparement celle-ci '/(08[0-9]{14})([0-9]{5})?/' est plus appropriée. Je voudrais savoir à quoi sert les / en debut et fin de chaine. Encore merci |
|
|
00
|
|
|
#11 |
|
Membre chevronné
![]() Étudiant Inscription : août 2005 Messages : 632 ![]() |
Quand tu utilises preg_, tu utilises la syntaxe PCRE. Ce sont des expressions regulieres créées pour PERL. Ce qui entoure la regex (ici /) correspond à ce qu'on appel les délimiteurs qui permettent d'integrer dans la regex les options. Comme par exemple "i" pour le dire insensible à la case. Ou encore "s" pour dire que le metacaractère "." integre aussi les sauts de ligne etc.
Fait une recherche plus approfondie sur les PCRE sur developpez il y a de bon cours. |
|
|
00
|
|
|
#12 | |
|
Invité de passage
![]() Inscription : novembre 2006 Messages : 9 ![]() |
Citation:
![]() Je vais suivre ton conseil et faire une recherche sur les PCRE. |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com