expression réguliere tte simple mas bon ..

OoO
Invité n'ayant pas de compte PHPfrance

09 févr. 2011, 17:36

Salut,

je débute le php et je cherche à faire une expression régulière toute bête, dans les tutoriel il expliquent très bien comment faire en sorte qu'en fin de chaine on obtienne bien un chiffre.
Moi ce que je veux c faire un traitement si la toute fin du numéro que l'on donne en entrée se situe entre 365 et 380.
<?php

     if(preg_match("#[365 - 380]$#", $nb))
     {
          echo 'Vrai, la chaîne correspond au masque';
     }
     else
     {
          echo 'Faux, la chaîne ne correspond pas au masque';
     }
?> 
Avec ce code 00375 > faux
00378 > vrai
00366 > vrai
00367 > faux

Ya un truc étrange.....
Il me manque une ptite info là ..

ViPHP
ViPHP | 5462 Messages

09 févr. 2011, 17:46

humm, comme ca :
3(?:6[5-9]|7[0-9]|80)$

OoO
Invité n'ayant pas de compte PHPfrance

09 févr. 2011, 18:00

ok après déchiffrage j'ai compris. Je pensais que il y aurait plus pratique tout de même.
je dois en faire plein comme ca .
Bon merki.

ViPHP
ViPHP | 5462 Messages

09 févr. 2011, 18:02

ok après déchiffrage j'ai compris. Je pensais que il y aurait plus pratique tout de même.
je dois en faire plein comme ca .
Bon merki.
fais le en 2 temps, recupere le nombre, ensuite tu peux faire une condition ou un filter_var avec FILTER_VALIDATE_INT

ViPHP
xTG
ViPHP | 7331 Messages

09 févr. 2011, 18:13

Si c'est une variable ne contenant que le chiffre en question il y a plus simple, conversion en entier puis vérification de la valeur :
$nb = intval($nb);
if( $nb >= 365 && $nb <= 380 )
  echo "ok";
else
  echo "pok";
Dans le cas où $nb n'est pas un entier le résultat converti sera 0 donc cela passera.
Confirmez moi que je trompe pas. :D