IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Tableaux] expression regulière dynamique sur "(" et "["


Sujet :

Langage PHP

  1. #1
    Membre éclairé
    Inscrit en
    Juin 2004
    Messages
    242
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 242
    Par défaut [Tableaux] expression regulière dynamique sur "(" et "["
    Bonjour

    je recupère d'une table mysql une liste de mots qui lorsqu'ils sont place en début de chaine doivent être rejeter de la chaine.
    Je construit donc dynamiquement un expression régulière qui pour chaque mot de ma liste me permet de tester sa présence dans ma chaine de caractère.
    Voici ma liste et mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    $mot_vide = Array
    (
        [0] => "
        [1] => Le
        [2] => La
        [3] => Les
        [4] => (
        [5] => L'
        [6] => [
    )
     
        $chaine = trim(stripslashes($chaine));
        $rows = count($mot_vide);
        for ($k=0;$k<$rows;$k++){
              // recherche sur du mot vide sur le début de la chaine sans tenir compte de la casse
                  $exp_reg = "/^".addslashes($mot_vide[$k])."/i";
                    if (preg_match($exp_reg,$chaine)){
                        $str = substr($chaine,strlen($mot_vide[$k])+1);
                        $str = trim($str);
                        break;
                    }
     
    // expression regulière obtenue
    //exp_reg = /^\"/i
    //exp_reg = /^Le/i
    //exp_reg = /^La/i
    //exp_reg = /^Les/i
    //exp_reg = /^(/i
    //exp_reg = /^L\'/i
    //exp_reg = /^[/
    le script marche bien jusqu'à ce que l'on arrive a ligne 4 et 6
    ou j'ai le message d'erreur

    Warning: preg_match() [function.preg-match]: Compilation failed: missing ) at offset 2
    Warning: preg_match() [function.preg-match]: Compilation failed: missing terminating ] for character class at offset 2
    Quelqu'un pourrait t'il me dire comment faire pour que ma parenthèse et mon crochet soit considéreré comme une chaine de caratère et non pas un élémént de l'expression ?


    merci d'avance

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    En les échappant : ajout d'un backslash (\) devant le caractère afin qu'il ne soit pas considéré comme un métacaractère. Voir aussi les fonctions preg_quote et quotemeta.


    Julp.

  3. #3
    Membre éclairé
    Inscrit en
    Juin 2004
    Messages
    242
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 242
    Par défaut
    merci bien, je ne connaissais pas ces fonctions

    Ca marche très bien maintenant

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 12/12/2007, 09h59
  2. [RegEx] Aide sur une expression regulière
    Par zulkifli dans le forum Langage
    Réponses: 1
    Dernier message: 13/03/2007, 15h02
  3. Expression regulière sur les dates
    Par Konrad Florczak dans le forum Langage
    Réponses: 23
    Dernier message: 05/10/2006, 17h49
  4. free sur des tableaux "a moitié dynamiques"
    Par barthelv dans le forum C
    Réponses: 4
    Dernier message: 31/07/2003, 15h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo