Cherche expression régulière
Résolu
cartouchek
Messages postés
3
Statut
Membre
-
dreamer1 -
dreamer1 -
Bonjour a tous,
C'est la première fois que je post dans un forum. j'espère que l'endroit choisi est le bon...
je cherche à créer une expression régulière en PHP qui me permette de récupérer des chiffres selon le masque suivant:
15/1
7.5/1
dans une chaine comme celle ci:
03 / 04 05 06 07 08 09 / / / / 1 / 145/1 / 2 / 49/1 / 3 / 83/1 / 4 / 37/1 / 5 / 8/1 / 6 / 16/1 / 7 / 78/1 / 8 / 2,5/1 / 9 / 100/1 / 10 / 14/1 / 11 / 24/1 / 12 / 2,2/1 / 13 / 29/1 / 14 / 94/1 / 15 / 28/1 / 16 / 6,2/1
j'ai beau m'arracher les cheveux, je n'arrive pas a créer ce masque x/1.
merci d'avance a tous ceux qui pourront m'aider....
C'est la première fois que je post dans un forum. j'espère que l'endroit choisi est le bon...
je cherche à créer une expression régulière en PHP qui me permette de récupérer des chiffres selon le masque suivant:
15/1
7.5/1
dans une chaine comme celle ci:
03 / 04 05 06 07 08 09 / / / / 1 / 145/1 / 2 / 49/1 / 3 / 83/1 / 4 / 37/1 / 5 / 8/1 / 6 / 16/1 / 7 / 78/1 / 8 / 2,5/1 / 9 / 100/1 / 10 / 14/1 / 11 / 24/1 / 12 / 2,2/1 / 13 / 29/1 / 14 / 94/1 / 15 / 28/1 / 16 / 6,2/1
j'ai beau m'arracher les cheveux, je n'arrive pas a créer ce masque x/1.
merci d'avance a tous ceux qui pourront m'aider....
Configuration: Windows XP Firefox 2.0.0.18
2 réponses
-
Salut,
En PHP je ne sais pas, mais en shell (bash) voilà ce que ça donne :[tmpfs]$ echo $chaine 03 / 04 05 06 07 08 09 / / / / 1 / 145/1 / 2 / 49/1 / 3 / 83/1 / 4 / 37/1 / 5 / 8/1 / 6 / 16/1 / 7 / 78/1 / 8 / 2,5/1 / 9 / 100/1 / 10 / 14/1 / 11 / 24/1 / 12 / 2,2/1 / 13 / 29/1 / 14 / 94/1 / 15 / 28/1 / 16 / 6,2/1 [tmpfs]$ echo $chaine | grep -o '[[:digit:],]*/1' 145/1 49/1 83/1 37/1 8/1 16/1 78/1 2,5/1 100/1 14/1 24/1 2,2/1 29/1 94/1 28/1 6,2/1 [tmpfs]$
En espérant que ça te donne une piste à adapter à la syntaxe du PHP...
;-))
-
Salut,
Voici un testlami20j@debian:~/trash$ cat script.php <? $var="03 / 04 05 06 07 08 09 / / / / 1 / 145/1 / 2 / 49/1 / 3 / 83/1 / 4 / 37/1 / 5 / 8/1 / 6 / 16/1 / 7 / 78/1 / 8 / 2,5/1 / 9 / 100/1 / 10 / 14/1 / 11 / 24/1 / 12 / 2,2/1 / 13 / 29/1 / 14 / 94/1 / 15 / 28/1 / 16 / 6,2/1 7.5/1"; echo "$var\n"; preg_match_all('/[^0-9][0-9]\.?[0-9]\/1/',$var,$tableau); foreach ($tableau as $elem){ print_r($elem); echo"\n"; } ?> lami20j@debian:~/trash$ php script.php 03 / 04 05 06 07 08 09 / / / / 1 / 145/1 / 2 / 49/1 / 3 / 83/1 / 4 / 37/1 / 5 / 8/1 / 6 / 16/1 / 7 / 78/1 / 8 / 2,5/1 / 9 / 100/1 / 10 / 14/1 / 11 / 24/1 / 12 / 2,2/1 / 13 / 29/1 / 14 / 94/1 / 15 / 28/1 / 16 / 6,2/1 7.5/1 Array ( [0] => 49/1 [1] => 83/1 [2] => 37/1 [3] => 16/1 [4] => 78/1 [5] => 14/1 [6] => 24/1 [7] => 29/1 [8] => 94/1 [9] => 28/1 [10] => 7.5/1 )-
bonjour,
super ça marche!!!!!
j'ai modifier un peu le code car en fait je voulais récupérer les nombres dans tous les exemples suivant:
2/1
12/1
123/1
2.1/1
12.1/1
j'ai donc fait comme ceci:
preg_match_all('/[^0-9][0-9]{1,3}\\,[0-9]{1}\/1|[^0-9][0-9]{0,3}\.?[0-9]\/1/',$page,$tableau);
foreach ($tableau as $elem)
{
print_r($elem);
echo"\n";
}
il y a peut être plus simple, mais bon ça marche en tout cas.
MERCI pour ton aide lami20j- Salut,
De rien ;-)
Essaie ça pour voirpreg_match_all('/\s[0-9]{1,3}\.?[0-9]?\/1/',$page,$tableau);Tu veux aussi récupérer la masque avec virgule?!preg_match_all('/\s[0-9]{1,3}[.,]?[0-9]?\/1/',$page,$tableau);
J'ai testé ta regex sur l'exemple que tu as donné et ça ne marche pas.lami20j@debian:~/trash$ cat script.php <? $page="03 / 04 05 06 07 08 09 / / / / 1 / 145/1 / 2 / 49/1 / 3 / 83/1 / 4 / 37/1 / 5 / 8/1 / 6 / 16/1 / 7 / 78/1 / 8 / 2,5/1 / 9 / 100/1 / 10 / 14/1 / 11 / 24/1 / 12 / 2,2/1 / 13 / 29/1 / 14 / 94/1 / 15 / 28/1 / 16 / 6,2/1 7.5/1 2/1 12/1 123/1 2.1/1 12.1/1"; # la tienne preg_match_all('/[^0-9][0-9]{1,3}\\,[0-9]{1}\/1|[^0-9][0-9]{0,3}\.?[0-9]\/1/',$page,$tableau); echo "Ta regex\n"; foreach ($tableau as $elem){ print_r($elem); echo"\n"; } # la mienne seulement avec . preg_match_all('/\s[0-9]{1,3}\.?[0-9]?\/1/',$page,$tableau); echo "avec le point\n"; foreach ($tableau as $elem){ print_r($elem); echo"\n"; } # la mienne avec point et virgule preg_match_all('/\s[0-9]{1,3}[.,]?[0-9]?\/1/',$page,$tableau); echo "avec point + virgule\n"; foreach ($tableau as $elem){ print_r($elem); echo"\n"; } ?> lami20j@debian:~/trash$ php script.php Ta regex Array ( [0] => 2,5/1 [1] => 2,2/1 [2] => 6,2/1 ) avec le point Array ( [0] => 145/1 [1] => 49/1 [2] => 83/1 [3] => 37/1 [4] => 8/1 [5] => 16/1 [6] => 78/1 [7] => 100/1 [8] => 14/1 [9] => 24/1 [10] => 29/1 [11] => 94/1 [12] => 28/1 [13] => 7.5/1 [14] => 2/1 [15] => 12/1 [16] => 123/1 [17] => 2.1/1 [18] => 12.1/1 ) avec point + virgule Array ( [0] => 145/1 [1] => 49/1 [2] => 83/1 [3] => 37/1 [4] => 8/1 [5] => 16/1 [6] => 78/1 [7] => 2,5/1 [8] => 100/1 [9] => 14/1 [10] => 24/1 [11] => 2,2/1 [12] => 29/1 [13] => 94/1 [14] => 28/1 [15] => 6,2/1 [16] => 7.5/1 [17] => 2/1 [18] => 12/1 [19] => 123/1 [20] => 2.1/1 [21] => 12.1/1 )
- salut,
stp j'ai besoin de votre besoin dans un truc si tu c possible..
J'ai besoin de récupérer le 10 et "Titre" du lien suivant à l'aide d'une expression réguliere(avec preg_match)
<a href="http://www.example.com/10" >Titre</a>
pouvez vous m'aider dans l'ecriture de l'expression??
merci d'avance :)
-