Page 1 sur 1

htacess expression regulière/php

Posté : 27 sept. 2012, 11:35
par omelhor
Bonjour,

Je n'arrive pas a mettre au point une expression régulière dans mon htacess

Mon RewriteRule:

Code : Tout sélectionner

RewriteRule ^joueur/(.*)-?([0-9]?).html$ /joueurs.php?nomJoueur=$1&p=$2 [L]
où $1 => nom du joueur
où $2 => numéro de page

Quand je tappe mon url:

Code : Tout sélectionner

http://127.0.0.1/joueur/Joueur-Luis-de-Carvalho.html
Dans ma page joueurs.php, via un $_GET j'obtient ceci:

Code : Tout sélectionner

array 'nomJoueur' => string 'Joueur-Luis-de-Carvalho' (length=21) 'p' => string '' (length=0)
=> j'obtiens bien ce que je veux

Si je tappe:

Code : Tout sélectionner

http://127.0.0.1/joueur/Joueur-Luis-de-Carvalho-5.html
Là j'obtient :

Code : Tout sélectionner

array 'nomJoueur' => string 'Joueur-Luis-de-Carvalho-5' (length=23) 'p' => string '' (length=0)

Alors que je voudrai:

Code : Tout sélectionner

array 'nomJoueur' => string 'Joueur-Luis-de-Carvalho' (length=23) 'p' => string '5' (length=0)


Pouvez-vous m'aider svp ?

Merci beaucoup

Re: htacess expression regulière/php

Posté : 28 sept. 2012, 08:04
par Mazarini
Il faudrait que tu choisisses un caractère interdit dans $1 pour séparer les 2 variables.

Tu peux également inverser les 2 valeurs pour que la première variable prenne les chiffres.

Re: htacess expression regulière/php

Posté : 28 sept. 2012, 09:32
par omelhor
Il faudrait que tu choisisses un caractère interdit dans $1 pour séparer les 2 variables.

Tu peux également inverser les 2 valeurs pour que la première variable prenne les chiffres.
J'avoue ne pas comprendre ta solution, j'ai réussit comme ceci( en 2 lignes) :

Code : Tout sélectionner

RewriteEngine On RewriteRule ^joueur/([a-zA-Z-]*).html$ /joueurs.php?nomJoueur=$1&p=0 [L] RewriteRule ^joueur/([a-zA-Z-]*)-([0-9]+)\.html$ /joueurs.php?nomJoueur=$1&p=$2 [L]
Mais sans doute y a t'il plus simple en 1 ligne ?

Re: htacess expression regulière/php

Posté : 28 sept. 2012, 10:37
par Mazarini
Ta solution consiste à interdire les chiffres (et d'autres caractères) ca ressemble en fait à interdire le séparateur dans le nom.