(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. 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.
    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 !