(PHP) Expression reguliere simple but noob...

Bonjour à tous,

Voila mon probleme. Je veux etre sur que dans un formulaire, l'utilisateur à bien mis dans un <input> ce format :

[numerique]x[numerique]


exemple :

60x60


(Des dimensions en clair)

Je me suis donc fait mon petit ereg :

if (ereg("[^0-9x0-9$]",$Lavariable))


Mais ca ne marche pas completement, c'est le meilleur que j'ai trouvé mais si jamais j'elevais mon "x" il validerais quand même le format...

Merci d'avance pour votre aide :)
Configuration: Windows XP
Internet Explorer 7.0

3 réponses

  1. Bonjour,

    L'expression rationnelle que tu recherches serait plutôt celle-ci :

    if (ereg("^[0-9]+x[0-9]+$",$Lavariable))

    Que l'on peut diviser en trois blocs :
    ^[0-9]+ : au début de la chaine, un ou plusieurs chiffres
    x : au milieu de la chaine, la lettre x
    [0-9]+$ : en fin de chaine, un ou plusieurs chiffres.

    Ce que tu as écrit n'est pas du tout une expression rationnelle valide. En effet, les [] désignent un ensemble de caractères possibles, sans notion d'ordre, mais ne désigne qu'un seul caractère.
    De plus, le ^ mis à l'intérieur de ces crochets signifie "tout sauf ce qui suit". Bref, ton expression rationnelle ne devait pas souvent être vérifiée !
    1. Contributeur
      mmmh je ne connais pas bien l'utilisation de ereg mais je pense qu'il doit falloir séparer correctement les chiffres du x (avec des parenthèses?)

      je peux cependant ton conseiller une méthode un peu plus longue mais qui va marcher.
      Avec un explode par exemple.

      $var = $_POST['machin']; //sensé contenir ton format

      $tab = explode("x",$var); // on sépare les 2 dimensions de ton format

      $erreur=true;

      if (count($tab)==2) { // si le format est bien composé de 2 parties
      if (is_numeric($tab[0]) && is_numeric($tab[1])) { /* si les 2 parties sont bien numériques */
      $erreur=false;
      }
      }

      if (!$erreur) {
      echo "C'est bon!!!";
      }

      en gros voila ce qui me vient à l'esprit.