Cherche expression régulière

Résolu
cartouchek Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -  
 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....
A voir également:

2 réponses

jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
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...

;-))
0
cartouchek Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
 
bonjour,

je n'est pas suivis ta piste, car la solution de lami20j fonctionne...

en tout cas, merci à toi de m'avoir consacrer d'un peu de ton temps...
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896 > cartouchek Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
 
Re-

Ben c'est normal, celle de lami20j étant beaucoup plus adaptée ;-))
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Salut,

Voici un test
lami20j@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
)

0
cartouchek Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
 
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
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570 > cartouchek Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
 
Salut,

De rien ;-)

Essaie ça pour voir
preg_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
)


0
dreamer1 > lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention  
 
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 :)
0