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 :

Aide pour une regex [Fait]


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 19
    Points : 12
    Points
    12
    Par défaut Aide pour une regex
    Salut, j'ai besoin d'aide pour une Regex... Je suis pas un expert dans le domaine, donc si quelqu'un pouvait m'aider à résoudre ce petit problème çà serait sympa Merci

    En fait il s'agit d'URL Rewriting,
    ma chaîne source a (obligatoirement) cette forme :

    blabla_arg1_arg2(...).html
    et je veux qu'après regex on ait : blabla.php?arg1&arg2(...)

    Vous voyez un peu?

    A+

  2. #2
    Membre éclairé
    Avatar de gerald2545
    Profil pro
    Inscrit en
    Février 2003
    Messages
    744
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 744
    Points : 773
    Points
    773
    Par défaut
    sois plus précis.
    donne nous la forme exacte de ta chaine en entrée :
    blabla_arg1_arg2(...).html
    il n'y aura que arg1 et arg2 ou il peut y en avoir plus?
    le nombre d'arg est fixe ou non?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 19
    Points : 12
    Points
    12
    Par défaut
    Salut, merci de ta réponse, ce qui m'a posé problème en fait c'est que justement le nombre d'args n'est pas fixé
    Est-ce faisable ?

  4. #4
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Salut

    Je passe juste pour quelques détails...
    Déjà, des tutos :Ensuite, la solution :

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 19
    Points : 12
    Points
    12
    Par défaut
    Merci chef

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 792
    Points : 1 206
    Points
    1 206
    Par défaut
    Citation Envoyé par pj69100
    Salut, merci de ta réponse, ce qui m'a posé problème en fait c'est que justement le nombre d'args n'est pas fixé
    Est-ce faisable ?
    Pour un nombre variable d'arguments, ce n'est pas trivial mais, oui, c'est faisable.

    • Solution simple
      Dans le genre:
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      RewriteRule ^/blabla.php_?([^_]*)_?([^_]*)_?([^_]*)_? blabla.php?var1=$1&var2=$2&var3=$3 [L]
      Inconvénients: tu risques de passer des variables vides à ta redirection. Et tu seras limité à 9 références arrières ($1 à $9).

    • Solution plus complexe
      Utiliser la directive RewriteMap. Il faut pointer cette directive vers un programme externe de mapping qui fera le parsing des arguments et les mettra en forme pour la redirection.

      Evidemment, tu dois avoir la main sur le serveur (dédié) car cette directive se met au niveau de la config du serveur et le programme vers lequel elle pointe sera un script (bash, perl ou... php-cli) exécutable.

      Si tu es sur un mutualisé, tu oublies le RewriteMap.

  7. #7
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Je t'ai dit des bêtises dans mon post précédent, désolé... D'une part, la regex solution serait plutôt telle que propose ripat et, d'autre part, je n'avais pas pris en compte l'utilisaton dans un .htaccess, ce qui rend la chose plus complexe que je l'avais supposé.

    Une question : si tes arguments sont de quantité variable, comment peux-tu retrouver l'URI d'origine ? L'intérêt de l'URL Rewriting est de zapper les noms des arguments, donc un nombre variable est plutôt complexe à gérer...

Discussions similaires

  1. [RegEx] Aide pour une regex
    Par tnarol dans le forum Langage
    Réponses: 3
    Dernier message: 25/03/2011, 16h47
  2. aide pour une regex
    Par casp13 dans le forum Langage
    Réponses: 3
    Dernier message: 21/02/2008, 09h41
  3. [RegEx] Besoin d'aide pour une regex
    Par vallica dans le forum Langage
    Réponses: 3
    Dernier message: 20/09/2006, 08h50
  4. [RegEx] Aide pour une REGEX svp
    Par Invité dans le forum Langage
    Réponses: 2
    Dernier message: 12/07/2006, 17h41
  5. [RegEx] Aide pour une REGEX
    Par Death83 dans le forum Langage
    Réponses: 6
    Dernier message: 28/06/2006, 15h50

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