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 :

[php5]preg_match($pattern,$Entry ) expression


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Inscrit en
    Janvier 2008
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 165
    Points : 84
    Points
    84
    Par défaut [php5]preg_match($pattern,$Entry ) expression
    bonjour
    j'ai un soucis avec mon expression régulière, lorsque je rentre le pattern en dur(je le récupère a travers un sniffer "charles") ça fonctionne, mais lorsque je laisse le code le générer et le passer en argument a preg_match($pattern,$Entry ) ca ne fonctionne plus. je ne vois pas ou est la différence entre les deux expressions

    merci si qq1 y voit mieux que moi, c'est super .....
    merci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
     
    public function  retour($directory,$extension){
     
     
    		//creation xml
    		$this->directoryXML = new DOMDocument();
    		// racine du fichier xml : repertoire public 
    		$this->directoryXML->loadXML('<?xml version="1.0" encoding="ISO-8859-1"?> <directory> <galeries> </galeries> </directory>');
     
     
    		$MyDirectory = opendir($directory) or die('Erreur');
     
    		//$node = $this->directoryXML->documentElement;
    		$this->node = $this->directoryXML->getElementsByTagName("galeries")->item(0);
    		//$this->node = $this->directoryXML;
    		//$myTab = array();	
     
    		// verification extension autorisées 
     
    		$pattern = "'#";
     
    		foreach($extension as $value)
    		{
    			if(!($value == end($extension)))
    			{
    				$pattern.=$value.'$|';
    			}else{
     
    				$pattern.=$value.'$';
     
    			}
    		}
     
    		$pattern .= "#'";
     
                   //expression récupérer dans le sniffer avec laquelle ca fonctionne
     
    		//$pattern='#jpg$|png$|jpeg$|gif$#';
     
    		while($Entry = @readdir($MyDirectory)) 
    		{
    			//return $pattern;
     
    			/* renvois les extention passé en parametres*/
    				if($Entry != '.' && $Entry != '..' && preg_match($pattern,$Entry )>0)
    				{
     
     
    						$file = $this->directoryXML->createElement("photo");
    						// ajoute l'attribut source = nom du fichier medias 
    						$file->setAttribute('source',$Entry);
    						// ajoute le noeud
    						$this->node->appendChild($file);
     
     
    				}
    		}// fin while 
     
    		closedir($MyDirectory);
     
    		$xml = $this->directoryXML->saveXML();
     
    		return $xml;
     
    		//return $pattern;
     
     
     
     
    	}// fin retour

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    tu te compliques pour pas grand chose, déjà pour parcourirs tes fichiers utilises FilesytemIterator, ensuite si tu veux filter l'extension pas besoin d'un regex, récupère l'extension avec pathinfo un coup de in_array et vendu

    sinon ton expression devrait ressembler a ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #\.(?:jpg|png|jpeg|gif)$#
    et d'ailleurs tu peux faire un RegexIterator sur le FilesytemIterator pour les filtrer

Discussions similaires

  1. pattern d'expressions régulières = X OU VIDE
    Par Pymento dans le forum Général Python
    Réponses: 5
    Dernier message: 13/02/2012, 11h45
  2. Réponses: 5
    Dernier message: 24/02/2010, 16h17
  3. Réponses: 1
    Dernier message: 04/07/2008, 14h53
  4. UML -> code PHP5 : design pattern ???
    Par D_Kupp dans le forum UML
    Réponses: 2
    Dernier message: 11/10/2007, 12h42
  5. [Pattern] Des expressions qui ne jouent pas à la régulière!
    Par Ravaka dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 21/04/2007, 15h28

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