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 :

Recherche de mots clés [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    222
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 222
    Points : 121
    Points
    121
    Par défaut Recherche de mots clés
    Bonjour,
    J'ai un fichier texte avec des mots clé identifiés de cette façon {.mot_clé.} et je voudrais les extraire avec un preg_match_all mais pas moyen de trouver le bon pattern.
    Est ce que quelqu'un pourrait m'aider.
    Merci d'avance

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 420
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 420
    Points : 15 789
    Points
    15 789
    Par défaut
    montre nous un exemple de code que tu as essayé

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    222
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 222
    Points : 121
    Points
    121
    Par défaut
    En fait je viens de trouver la solution à l'instant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_match_all("@{.([^#]*).}@",$buffer,$no_cache);
    Mais j'ai un autre problème tout c..
    Je voudrait prendre ce résultat et l'utiliser pour constituer le nom d'une variable de type POST dans un preg_replace mais pas moyen de trouver la bonne syntaxe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_replace('@{.$no_cache[1][0].}@', $_POST[$no_cache[0][1]], $buffer);
    Donc si vous avez une idée je suis preneur

  4. #4
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Citation Envoyé par shelko Voir le message
    En fait je viens de trouver la solution à l'instant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_match_all("@{.([^#]*).}@",$buffer,$no_cache);
    Mais j'ai un autre problème tout c..
    Je voudrait prendre ce résultat et l'utiliser pour constituer le nom d'une variable de type POST dans un preg_replace mais pas moyen de trouver la bonne syntaxe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    preg_replace('@{.$no_cache[1][0].}@', $_POST[$no_cache[0][1]], $buffer);
    Donc si vous avez une idée je suis preneur
    Déjà ta première regex ne doit pas marcher correctement car tu n'échappes pas les points.
    Moi j'aurais plutôt fait ça

  5. #5
    Expert éminent sénior

    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
    Points : 17 777
    Points
    17 777
    Par défaut
    Les accolades ({ et }) sont également des métacaractères donc nécessitent, eux-aussi, échappement. En temps normal ils ont pour but d'indiquer le nombre d'occurrence. (même chose pour $ si vous veniez à le réutiliser, ancre indiquant la fin de la chaîne)

    Quant à votre remplacement, si celui-ci doit être dynamique il faut se tourner vers preg_replace_callback ou le modificateur e. Le paramètre de remplacement (le deuxième de preg_replace) n'est évalué qu'une seule fois, au moment où votre fonction est exécutée. Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $in = '{.qui.} a mangé {.fruit.}';
    $_POST = array('qui' => 'toto', 'fruit' => 'pomme');
    $out = preg_replace('#\{\.([[:alnum:]_]+)\.\}#e', 'isset($_POST["\1"]) ? $_POST["\1"] : "\1"', $in);
    echo $out;
    (vous pourrez trouver d'autres exemples si nécessaire sur ce même forum)

  6. #6
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Citation Envoyé par julp Voir le message
    Les accolades ({ et }) sont également des métacaractères donc nécessitent, eux-aussi, échappement. En temps normal ils ont pour but d'indiquer le nombre d'occurrence. (même chose pour $ si vous veniez à le réutiliser, ancre indiquant la fin de la chaîne)
    Oups, j'ai pas les yeux en face des trous, sorry.

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

Discussions similaires

  1. Recherche par mot clés - Php -Mysql
    Par pod1978 dans le forum Requêtes
    Réponses: 8
    Dernier message: 22/09/2006, 13h01
  2. recherche par mots-clés dans base access
    Par syber72 dans le forum Access
    Réponses: 2
    Dernier message: 07/03/2006, 13h53
  3. [MySQL] recherche par mots clés
    Par spartan dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 16/02/2006, 16h11
  4. [Tableaux] Moteur de recherche par mot clés
    Par Nee dans le forum Langage
    Réponses: 4
    Dernier message: 20/01/2006, 11h30
  5. Recherche par mots clés
    Par legillou dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 17/06/2005, 10h56

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