Précédent   Forum des professionnels en informatique > PHP > Langage > Regex
Regex Forum d'entraide sur les expressions rationnelles PHP. Avant de poster -> FAQ regex, Cours de regex et Sources de regex
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/10/2006, 09h53   #1
Expert Confirmé
 
Avatar de titoumimi
 
Inscription : décembre 2003
Messages : 3 717
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : décembre 2003
Messages : 3 717
Points : 3 082
Points : 3 082
Par défaut Ré-écriture d'URL : expression qui marche dans une fonction, mais pas dans le htacces

Bonjour à tous.

ça fait 3 jours que je m'arrache les cheveux là-dessus, je me résoud à faire appel à vous

Je souhaite transformer une URL reçue de ce genre :

Seek-by-reference?val_selected=123&limite=0&d'autresparams dont je je moque

en quelque chose comme ça :

index.php?id_p=17&val_selected=123&limite=0

id_p ne varie pas, val_selected peut être alphanumérique ou nul, et limite numérique uniquement.

j'ai donc testé ça :
Code :
1
2
3
4
5
$chaine = 'Seek-by-reference?val_selected=123&limite=0&Submit_main.x=9&Submit_main.y=6';
$motif = "Seek-by-reference\?val_selected=([a-zA-Z0-9]*)&limite=([0-9]+)";
$nouvelle = "index.php?id_p=17&val_selected=\\1&limite=\\2";
 
$chaine = ereg_replace($motif, $nouvelle, $chaine);
ça marche très bien, ça me retourne l'url désirée. Cependant, quand je met cette ligne dans mon htaccess :

Code :
RewriteRule ^Seek-by-reference?val_selected=([a-zA-Z0-9]*)&limite=([0-9]+).* index.php?id_p=17&val_selected=$1&limite=$2 [L]
je me retrouve avec une belle erreur 404 de la mort qui tue... Est-ce que vous auriez une idée SVP ? Je commence un peu à désespérer

d'avance
__________________
Globalement inoffensif
Merci de respecter les règles du forum.
Aucune question technique par MP !
_______________________________________________________________________
La rubrique Ruby / Rails recrute. Contactez moi !
_______________________________________________________________________
Cours Ruby et Ruby on Rails (RoR) - FAQ Ruby / Rails - Livres Ruby / Rails
Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
Tutoriaux HTML/CSS et PHP
titoumimi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/10/2006, 11h02   #2
Expert Confirmé
 
Avatar de titoumimi
 
Inscription : décembre 2003
Messages : 3 717
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : décembre 2003
Messages : 3 717
Points : 3 082
Points : 3 082
j'ai essayé d'échapper le ? dans ma directive, mais toujours le même soucis.

J'ai essayé sinon cette directive :

Code :
RewriteRule ^Seek-by-reference(.*) index.php?id_p=17$1 [L]
ça marche un peu mieux dans le sens ou il m'affiche ma page, mais il ne prend aucun paramètre en compte à l'exception de mon id_p...

ça doit être du aux deux ? successifs qu'il croise (?id_p=17?val_selected=...) mais je ne voit pas du tout comment le gérer
__________________
Globalement inoffensif
Merci de respecter les règles du forum.
Aucune question technique par MP !
_______________________________________________________________________
La rubrique Ruby / Rails recrute. Contactez moi !
_______________________________________________________________________
Cours Ruby et Ruby on Rails (RoR) - FAQ Ruby / Rails - Livres Ruby / Rails
Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
Tutoriaux HTML/CSS et PHP
titoumimi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/10/2006, 11h09   #3
Membre régulier
 
Inscription : décembre 2005
Messages : 225
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 225
Points : 76
Points : 76
Fais attention aux guillemets et aux apostrophes , tu peux soit remplacer ce code :
Code :
$motif = "Seek-by-reference\?val_selected=([a-zA-Z0-9]*)&limite=([0-9]+)";
par :
Code :
$motif = "Seek-by-reference\\?val_selected=([a-zA-Z0-9]*)&limite=([0-9]+)";
Ou utiliser des apostrophes au lieu des guillemets , à toi de choisir .
__________________
Forum Programmation d'OS - Tutoriel pour créer un petit noyau 32 bits .

( le développement de littlefoot86 est abandonné ... )
bouazza92 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/10/2006, 11h10   #4
Membre régulier
 
Inscription : décembre 2005
Messages : 225
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 225
Points : 76
Points : 76
Et dans ton fichier .htaccess tu dois avoir :
Code :
RewriteRule ^Seek-by-reference\?(.*) index.php?id_p=17&$1 [L]
__________________
Forum Programmation d'OS - Tutoriel pour créer un petit noyau 32 bits .

( le développement de littlefoot86 est abandonné ... )
bouazza92 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/10/2006, 11h13   #5
Expert Confirmé
 
Avatar de titoumimi
 
Inscription : décembre 2003
Messages : 3 717
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : décembre 2003
Messages : 3 717
Points : 3 082
Points : 3 082
merci pour ta réponse

je viens de tester ta solution, et je retourne sur l'erreur 404
__________________
Globalement inoffensif
Merci de respecter les règles du forum.
Aucune question technique par MP !
_______________________________________________________________________
La rubrique Ruby / Rails recrute. Contactez moi !
_______________________________________________________________________
Cours Ruby et Ruby on Rails (RoR) - FAQ Ruby / Rails - Livres Ruby / Rails
Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
Tutoriaux HTML/CSS et PHP
titoumimi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/10/2006, 19h24   #6
Membre régulier
 
Inscription : décembre 2005
Messages : 225
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 225
Points : 76
Points : 76
Désolé mais mes regex marchent très bien , je les ai testées avec ce testeur avec succés : http://www.lumadis.be/regex/test_regex.php .
Si tu essaie d'accéder à Seek-by-reference sans paramétre , alors utilise cette regex :
Code :
^Seek-by-reference(\?|)(.*)
Cette dérniére est compatible avec ou sans paramétre
__________________
Forum Programmation d'OS - Tutoriel pour créer un petit noyau 32 bits .

( le développement de littlefoot86 est abandonné ... )
bouazza92 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h47.


 
 
 
 
Partenaires

Hébergement Web