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. 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
    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,
        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. merci , je vais tester tout ça
          0