(PHP) Expression reguliere simple but noob...

Defaite -  
Reivax962 Messages postés 3742 Statut Membre -
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. ThEBiShOp Messages postés 9307 Date d'inscription   Statut Contributeur Dernière intervention   1 606
     
    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
  2. Reivax962 Messages postés 3742 Statut Membre 1 011
     
    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