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 :

Regex Url Rewriting - Portion conditionnelle


Sujet :

Langage PHP

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Regex Url Rewriting - Portion conditionnelle
    Bonjour,
    je suis nouvelle sur le forum, j'espère que c'est l'occasion que j'apprenne beaucoup de choses, et qui sais que je porte ma contrib' !

    Je bute sur une regex.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (videos|interviews|films)(?:-(75|78|13|11))?(?:-(\w+))?
    Qui devrais me permettre d'obtenir :

    videos-75-abcd, mais aussi videos-75, ou encore videos.

    Mais voila cela ne marche pas. Je suppose que je n'ai pas le recul suffisant pour appréhender les expressions telles que celle la.

    Pourriez vous m'aider svp.

    Merci d'avance !

  2. #2
    Membre émérite

    Homme Profil pro
    Expert PHP
    Inscrit en
    Novembre 2004
    Messages
    2 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Expert PHP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 127
    Points : 2 557
    Points
    2 557
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (videos|interviews|films)(-(75|78|13|11))?(-(\w+))?
    Essaie ça ?

  3. #3
    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 sweety_des_isles Voir le message
    Bonjour,
    je suis nouvelle sur le forum, j'espère que c'est l'occasion que j'apprenne beaucoup de choses, et qui sais que je porte ma contrib' !

    Je bute sur une regex.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (videos|interviews|films)(?:-(75|78|13|11))?(?:-(\w+))?
    Qui devrais me permettre d'obtenir :

    videos-75-abcd, mais aussi videos-75, ou encore videos.

    Mais voila cela ne marche pas. Je suppose que je n'ai pas le recul suffisant pour appréhender les expressions telles que celle la.

    Pourriez vous m'aider svp.

    Merci d'avance !
    Bonjour,

    Je ne comprends pas ce qui ne marche pas.
    Ton motif matche correctement sur les trois chaînes que tu as données.
    Maintenant, si tu veux aussi extraire le suffixe après "videos", effectivement, ça ne va pas marcher. L'explication est à trouver dans la définition du quantificateur ? après une parenthèse groupante : nous pourrions le traduire en français par "zéro ou plusieurs fois le groupe précédent". Zéro fois étant la solution testée en premier et qui marche bien sûr à tous les coups, l'expression ne va pas chercher plus loin.

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Ah ok...
    Pourrais tu m'indiquer qu'est ce qui cloche, pour que je puisse extraire chaques partis indépendamment

    Merci

  5. #5
    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
    En fait je ne comprends pas ton besoin.

    Prenons comme exemple un fichier avec les trois lignes que tu nous as données :

    Code fichier txt : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    videos-75-abcd
    videos-75
    videos

    Que veux-tu que ta fonction aie comme action sur ces lignes ?

    Dois tu seulement les repérer ou bien dois-tu en extraire quelque chose ?

  6. #6
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par jml94 Voir le message
    En fait je ne comprends pas ton besoin.

    Prenons comme exemple un fichier avec les trois lignes que tu nous as données :

    Code fichier txt : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    videos-75-abcd
    videos-75
    videos

    Que veux-tu que ta fonction aie comme action sur ces lignes ?

    Dois tu seulement les repérer ou bien dois-tu en extraire quelque chose ?
    En fait, clairement, j'aimerais pouvoir avoir

    Code fichier txt : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    videos-75-abcd
    videos-75
    videos

    Où par exemple pour videos-75-abcd, je puisse savoir que j'ai comme variables : premiere variable = videos, seconde variable = 75, troisieme variable = abcd.
    Et si par exemple j'ai uniquement videos, cela voudrais dire que les secondes et troisieme variables sont à zéro ou nulles.

    J'utilise pour cela le Zend router regex du zend framework, via :
    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
     
    $router->addRoute('videos',new Zend_Controller_Router_Route_Regex(
        '(videos|video-clips|video-freestyles)(?:-(75|78|971|974))?(?:-(\d)+)?'
      , array(
            'controller' => 'list-entite',
            'action'     => 'index',
            'entite'     => null
          , 'pays'        => null
          , 'musique'        => null
        )
      , array(
            1=>'entite'
          , 2=>'pays'
          , 3=>'musique'
        ),
      '%s-%s-%s'
    ));

  7. #7
    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 sweety_des_isles Voir le message
    Où par exemple pour videos-75-abcd, je puisse savoir que j'ai comme variables : premiere variable = videos, seconde variable = 75, troisieme variable = abcd.
    Et si par exemple j'ai uniquement videos, cela voudrais dire que les secondes et troisieme variables sont à zéro ou nulles.
    En gros, tu veux traiter une sorte de fichier csv dont le séparateur serait le tiret ?

    Les regex ne sont peut-être pas ce qu'il y a de plus simple, mais tu peux essayer celle-là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $myPattern = "/^([^-]*)-?([^-]*)-?(.*)$/";
     
    $mystr= "videos-75-abcd";
     
    preg_match($myPattern, $mystr, $matches);
    if (isset($matches[1])) print "1 : ".$matches[1];
    if (isset($matches[2])) print "2 : ".$matches[2];
    if (isset($matches[3])) print "3 : ".$matches[3];

Discussions similaires

  1. regex, url rewrite et caractere speciaux
    Par MatthieuFourcade dans le forum Langage
    Réponses: 1
    Dernier message: 12/02/2010, 20h29
  2. Aide pour un regex url rewriting
    Par Bouki dans le forum Apache
    Réponses: 2
    Dernier message: 12/11/2008, 10h02
  3. [Url Rewriting] Regex complexe
    Par T0xF0x dans le forum Apache
    Réponses: 7
    Dernier message: 27/05/2006, 21h35
  4. [url rewriting] Regex plus propre ?
    Par seb_perl dans le forum Apache
    Réponses: 1
    Dernier message: 14/12/2005, 16h47
  5. [RegEx] url rewriting - regex
    Par vnk600 dans le forum Langage
    Réponses: 1
    Dernier message: 20/11/2005, 22h42

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