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 10/09/2006, 20h25   #1
Membre Expert
 
Avatar de Anduriel
 
Homme
Étudiant
Inscription : février 2004
Messages : 2 168
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : février 2004
Messages : 2 168
Points : 1 277
Points : 1 277
Par défaut Possibilités pour preg_match()

Salut,
J'ai un code pas très joli pour tester une url (3 controles). Je voudrais en faire un seul avec preg_match(). Je veux que l'url se termine par index.php ou index.php# ou msg.php?id=X.
Voila le code:

Code :
preg_match("#admin/(msg\.php\?id\=[0-9]+)?(index\.php)?(index.php#)?#", $form);
Avec ça je peux juste dire que ça ne fonctionne pas, ça renvoit toujours false. Je ne vois pas ou ça plante.
Comment faire?
Merci
Anduriel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/09/2006, 20h36   #2
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Pour une alternative, recourez plutôt à la barre oblique (|) (non testé) :
Code :
1
2
 
preg_match("£admin/(msg\.php\?id\=[0-9]+)|(index\.php)|(index\.php#)£", $form);
De plus, vu que vous utilisez le caractère dièse comme délimiteur, vous auriez dû échapper celui qui figure dans l'expression ou bien opter pour un délimiteur différent.


Julp.
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/09/2006, 20h43   #3
Rédacteur
 
Avatar de Yogui
 
Homme Guillaume Rossolini
Directeur technique
Inscription : février 2004
Messages : 13 720
Détails du profil
Informations personnelles :
Nom : Homme Guillaume Rossolini
Localisation : France

Informations professionnelles :
Activité : Directeur technique

Informations forums :
Inscription : février 2004
Messages : 13 720
Points : 17 355
Points : 17 355
Salut

Histoire d'améliorer la regex de julp, j'enlève les parenthèses capturantes et j'ajoute un ancrage de fin :
Citation:
preg_match('£admin/(?:msg\.php\?id\=[0-9]+)|(?:index\.php)|(?:index\.php#)$£', $form);
__________________
Mes articles - Zend Certified Engineer (PHP + Zend Framework)
Ressources PHP - Ressources Zend Framework
Yogui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/09/2006, 21h01   #4
Membre Expert
 
Avatar de Anduriel
 
Homme
Étudiant
Inscription : février 2004
Messages : 2 168
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : février 2004
Messages : 2 168
Points : 1 277
Points : 1 277
Génial merci à vous deux! J'avais essayer avec le délimiteur | sans succès. L'alernative de Yogui fonctionne Sinon pour le délimiteur j'aurai du échapper je me suis posé la question.

Merci
Anduriel est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h46.


 
 
 
 
Partenaires

Hébergement Web