Pb utilisation regex
peaulisse
-
peaulisse -
peaulisse -
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 !!
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
-
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!GnOOn est des rangers mec, des rangers...
-
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 -
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!GnOOn est des rangers mec, des rangers...
-