IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Possibilités pour preg_match() [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Pour une alternative, recourez plutôt à la barre oblique (|) (non testé) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  3. #3
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Salut

    Histoire d'améliorer la regex de julp, j'enlève les parenthèses capturantes et j'ajoute un ancrage de fin :
    preg_match('£admin/(?:msg\.php\?id\=[0-9]+)|(?:index\.php)|(?:index\.php#)$£', $form);

  4. #4
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 24/06/2019, 14h41
  2. [SQL] Recherche avec plusieurs possibilités pour un champ
    Par jeronimo83 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 15/07/2008, 15h27
  3. possibilité pour un backoffice php/flash ?
    Par hlcginfo dans le forum Dynamique
    Réponses: 0
    Dernier message: 06/05/2008, 18h25
  4. [RegEx] problème de motif pour preg_match()
    Par Tchupacabra dans le forum Langage
    Réponses: 4
    Dernier message: 18/10/2007, 09h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo