Regular expression php

Résolu
Bonjour,

j'ai une variable $classe sur laquelle j'effectue un test
expl : $classe="380709 jean paris";

on peu avoir plusieurs profs exp : pierre, jean
on peu avoir plusieurs villes exp : paris, geneve

voila le contnu de la variable $classe
$classe="280709 jean paris";
$classe="290709 jean ";
$classe="280709 pierre geneve";

voila le test :
if (ereg("([0-9]{6}) (pierre|jean) (paris|pierre)", $classe, $reg))
{
echo "$reg[1].$reg[2].$reg[3]";
}

la ville peu existe ou pas comment faire pour dire que le paramètre ville est optionnelle ?
la variable $classe peu contenir la ville ou pas

bonne journée
Configuration: Windows Vista Internet Explorer 7.0

5 réponses

  1. salut,

    en méthode pas très belle, tu peux tout simplement remettre toute ton expression en optionnel avec | :

    (([0-9]{6}) (pierre|jean) (paris|geneve))|(([0-9]{6}) (pierre|jean))
    1. Bonjour,

      Les valeurs de la variable $classe proviennent d'une base de données
      et je dois directement test cette variable sans faire aucune modification

      Bonne journée
      1. tu ne pourra pas tester la chaine représentant ta ville si tu ne peux pas modifier ton expression régulière et si en plus les villes possibles peuvent changer.
        dans ce cas je ne vois plus que tester la présence de caractères alphabétiques.
        1. Bonjour,

          Merci beaucoup pour ton aide

          j'ai testé ton exemple et ça fonctionne à merveille

          mai j'ai trouvé une autre méthode

          j'utilise "?" pour dire que l'expression entre parenthésé est optionnel

          exemple : ([0-9]{6}) (pierre|jean)( (paris|Genève))?

          ça fonctionne aussi bien

          Merci encore

          bonne journée,
          1. tout à fait tu as raison et c'est même mieux ! n'hésite pas à passer le sujet en résolu si c'est bien le cas !