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 :

utilisation de preg_match pour tester un nom de dossier valide [RegEx]


Sujet :

Langage PHP

  1. #1
    Membre actif Avatar de maxeur
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    416
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 416
    Points : 267
    Points
    267
    Par défaut utilisation de preg_match pour tester un nom de dossier valide
    Bonjour à tous.

    j'essaye d'utiliser preg_match pour vérifier qu'un nom de dossier est bien structuré.

    Je souhaite utiliser l'expression régulière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #^([a-zA-Z]:|/|\\){1}(/|\\){1}([^/:*\"<>]+/?)+$#
    J'utilise actuellement le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $regexp = "#^([a-zA-Z]:|/|\\){1}(/|\\){1}([^/:*\"<>]+/?)+$#";
    $attributeValue = "C:/test/";
    if (preg_match($regexp, $attributeValue) > 0){
    		$sResult="";  
    	}else{
    		$sResult="Le champ \"".$attributeLabel."\", ne correspond pas a ".$regexpName.".<br>";
    	}
    Lors de mes tests sur des testeurs d'expressions régulière trouvés sur la toile, mon expression régulière fonctionne, par contre dés lors que je l'intègre dans mon code voici l'erreur que j'obtiens :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PHP Warning:  preg_match(): Compilation failed: missing ) at offset 43 in C:\GTF\Apache2\htdocs\lib\vmlib\formVerif.inc on line 32
    Du coup mon expression régulière n'est pas trouvé.

    Est ce que quelqu'un saurait où j'aurais pu me planter ?

    Je vous remercie d'avance

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Comme ça, ça fonctionne : #^([a-zA-Z:|/|\\]{1})([/|\\]{1})([^/:*\"<>+/?])+$#. En revanche, je ne suis pas sûre que ça fasse ce que tu souhaites...
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Membre actif Avatar de maxeur
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    416
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 416
    Points : 267
    Points
    267
    Par défaut
    Merci pour ta réponse, mais c'est vrai que ça ne réagit plus du tout comme je le souhaite.

    J'ai cherché des exemples sur le net d'expressions régulières permettant de vérifier un nom de dossier mais je n'en ai trouvé aucun.

    Du coup, j'ai essayé de la faire à ma sauce. En .net elle fonctionne mais en php non.

    J'ai vu que je devais peut être utilisé des caractères d'échappement mais ça n'a pas l'air de faire avancer le schmilblique.

    En tout cas merci je vais continuer à chercher

  4. #4
    Membre actif Avatar de maxeur
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    416
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 416
    Points : 267
    Points
    267
    Par défaut
    Je viens enfin de trouver la solution, il suffisait d'inverser les / et les \\.

    Voici la solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #^([a-zA-Z]:|\\|/)([\\|/])([^/:*\"<>+/?])+([\\|/])?$#

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 26/01/2009, 16h07
  2. Réponses: 6
    Dernier message: 26/05/2008, 18h13
  3. Utiliser une variable pour stocker les noms d'objets.
    Par en_gel_ho dans le forum Access
    Réponses: 4
    Dernier message: 03/01/2007, 16h44
  4. Réponses: 7
    Dernier message: 07/09/2004, 14h16
  5. utilisation du mid pour tester le début d'un champ
    Par PrinceMaster77 dans le forum ASP
    Réponses: 4
    Dernier message: 09/07/2004, 13h10

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