Pb utilisation regex

Bonjour à tous,

voila, je débute en programmation regex sous php, pour creer des routines d'url rewriting, et g kk souçis pour m'en sortir :)

voici mon problème :
je créé un petit programme pour decouper un article en plusieurs pages, et je voudrais écrire un regex qui me permette d'afficher plusieurs types d'url de pages , comme ceci :
http://www.mondomaine.com/actu/2010/03/17/titre_article
http://www.mondomaine.com/actu/2010/03/17/titre_article/1
http://www.mondomaine.com/actu/2010/03/17/titre_article/2

si mon article est découpé en 2 pages.

dans mon lighttpd.conf (je travaille sous lighttpd debian), j'ai écrit la regex suivante qui me permet de matcher les 3 url :
"^/(.*\/\d{4}\/\d{2}\/\d{2})/([0-9a-zA-Z-_]+)/?([0-9{0,1})$" => "/index.php?module=$1&opts=$2&pagination=$3"

le pb, c que cette regex ne permet plus d'afficher une url de cette sorte :
http://www.mondomaine.com/actu/insolite (actu et insolite etant des categorie d'articles)

j'ai kan mm trouvé une regex qui me permet de gérer cette derniere url:
"^/(.*)/(.*)?$" => "/index.php?module=$1&opts=$2", mais des que je la rends active, ce sont mes ul paginées qui ne matchent plus...

voila, voila...si une ame charitable pouvait-il m'aider à matcher toutes les url, ce serait trop sympa :)

merci d'avance a tous !
merci d'avance à tous !!

4 réponses

  1. merci , je vais tester tout ça
    0
    1. salut,
      J'ai trouvé ça, mais il faut concaténer certains résultats pour avoir ce que tu veux, je te met le p'tit script de test, sinon l'expression utilisée est bien ^/([^/]+)((/[0-9]{4}/[0-9]{2}/[0-9]{2}/)([0-9A-Za-z_-]+)/?([0-9]{0,1})?|/([a-z]+))$:
      <?php 
      $aData[] = "/actu/2010/03/17/titre_article"; 
      $aData[] = "/actu/2010/03/17/titre_article/1"; 
      $aData[] = "/actu/2010/03/17/titre_article/2"; 
      $aData[] = "/actu/insolite"; 
      
          foreach($aData as $sString){ 
              preg_match_all("@^/([^/]+)((/[0-9]{4}/[0-9]{2}/[0-9]{2}/)([0-9A-Za-z_-]+)/?([0-9]{0,1})?|/([a-z]+))$@", $sString, $aMatches ); 
              echo "<hr/>$sString :"; 
              echo "<br/> 1 : ".$aMatches[1][0].$aMatches[3][0]; 
              echo "<br/> 2 : ".$aMatches[4][0].$aMatches[6][0]; 
              echo "<br/> 3 : ".$aMatches[5][0]; 
          } 
      ?> 
      


      EnJoY !

      Zep3k!GnO
      On est des rangers mec, des rangers...
      0
      1. je vois ke 2 parentheses capturantes dans ta regexp, comment tu fais pour récupérer le $3 de la pagination (soit 1,2 si mon article est découpé en 2 pages) ?
        et matcher la 4e url (actu/insolite) ?

        ben je voudrais récupérer :
        http://www.mondomaine.com/actu/2010/03/17/titre_article
        http://www.mondomaine.com/actu/2010/03/17/titre_article/1
        http://www.mondomaine.com/actu/2010/03/17/titre_article/2

        $1 : actu/2010/03/17/
        $2 : titre_article
        $3 : 1 ou 2
        et avec la derniere url http://www.mondomaine.com/actu/insolite
        $1 : actu
        $2 : insolite

        merci
        0
        1. Salut,
          moi avec cette regExp la, je match les 3 :

          ^/([^/]+/[0-9]{4}/[0-9]{2}/[0-9]{2}/[0-9A-Za-z_-]+)(/[0-9]{0,1})?$


          car avec l'autre, moi ça passait aps, je pense qu'il y a eu un pb de copier/coller.

          c'est quoi tous les types d'URL que t'as a rewriter ?
          Genre toutes les formes génériques que tu veux rewrite.

          Enjoy !
          Comme le dirai shakespear : [bb]|[^b]{2} that is the question...

          Zep3k!GnO
          On est des rangers mec, des rangers...
          0